是否有一种方法可以使表单仅识别一个必需字段

Is there a way for a form to identify only one required field

本文关键字:识别 一个 字段 可以使 一种 方法 是否 表单      更新时间:2023-09-26

例如:

<form>
    <input type="email" name="email" id="useremail" placeholder="Email Address" required> <br>
    <input type="tel" name="phone" id="userphone" placeholder="Phone Number" maxlength="10" required> <br>
    <input type="submit" id="sidebarformsubmit" value="Submit">
</form>

是否有可能以某种方式/在某个地方能够识别用户在电子邮件或电话号码字段中输入的内容?这样在提交时就不会显示"this is required"

注意:至少可以有一个表单输入是强制的,两个都可以,要么是一个,要么是另一个,但不能没有。在上面的示例中,用户需要至少有一种通信形式,无论是电话号码还是电子邮件。他们可以两者兼得,但不能一个都没有。

如果是,你会怎么做?

您可以轻松地从输入中捕获更改事件并相应地设置所需的属性。这样的:

var email = document.getElementById('useremail'),
    phone = document.getElementById('userphone');
function onchange(){
    email[phone.value?'removeAttribute':'setAttribute']('required','required');
    phone[email.value?'removeAttribute':'setAttribute']('required','required');
}
email.addEventListener('change',onchange);
phone.addEventListener('change',onchange);

jsfiddle

是否有可能以某种方式/在某个地方能够识别用户在电子邮件或电话号码字段中输入的内容?这样在提交时就不会显示"this is required"

1)没有。如果你在一个字段上使用HTML5 required,那么字段是必需的。没有办法指定相互依赖关系。

2)是的。您可以使用客户端javascript验证,通常与表单submit事件挂钩,以执行任意复杂的验证。如果您没有通过验证,则通过从事件处理程序返回false来阻止提交。

3)是的。当您收到提交的表单时,您可以在服务器上进行尽可能复杂的验证,如果出现错误,则直接返回到表单。

3b)你必须在服务器上做验证,即使你有伟大的客户端javascript验证,否则我会从你的网站买东西一分钱。您必须而不是信任客户端