【问题标题】:Validate if one of two form fields is filled?验证是否填写了两个表单字段之一?
【发布时间】:2017-06-06 18:52:30
【问题描述】:

这两个字段中至少有一个是必填项,如果字段 1 或字段 2 已填写,则发送表单时,只需填写其中一项即可。我正在尝试使用下面的代码执行此操作,但无法正常工作,这仅适用于验证所需的字段 1 (text1)。谢谢!

var field1 = text1;
var field2 = text2;

if (text2.length) {
    if (!field1.length || !field2.length) {
        return false;
    }
} else if (!field1.length) {
    return false;
}
<input type="text" placeholder="text 1*" name="text1" class="text1" data-target="previewText1" maxlength="11">
<input type="text" placeholder="text 2" value="" name="text2" class="text2" data-target="previewText2" maxlength="11">

【问题讨论】:

    标签: javascript jquery field


    【解决方案1】:

    这是一个简单的情况,即使用 not 运算符对每个长度进行 AND 条件。

    if (!field1.length && !field2.length) {
        return false;
    }
    

    也就是说如果 field1 为空且 field2 为空则表单无效。

    这假定field1 和field2 是字符串值而不是DOM 元素。如果它们是 DOM 元素,那么您需要使用 field1.value.length 和 field2.value.length。

    【讨论】:

    • 我正在尝试执行其中一项,但这只是填写第一个字段,当我填写第二个字段并将第一个字段留空时,表单按钮可以发送信息。
    • 你一定是设置field1或field2有问题,因为这是正确的逻辑。你可以在这里看到一个工作演示jsfiddle.net/3jety3kb
    【解决方案2】:

    像这样:

    var field1 = document.getElementsByClassName("text1").value;
    var field2 = document.getElementsByClassName("text2").value;
    
    // Check if one of the fields is not empty
    if (field1.length || field2.length) {
            return true;
    }
    return false;
    

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 2011-01-11
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多