jQuery 验证需要两个字段或另一个字段

jQuery validate require two field or one other filed

我一直在寻找,但没有找到满足我特定需求的解决方案。我总共有 3 个字段(first_name、last_name 和 business_name)。我希望用户要么输入名字和姓氏,要么只输入公司名称。

我有几种方法,这是我最近的尝试。

<input type="text" id="first_name" name="first_name">
<input type="text" id="first_last" name="first_last">
<input type="text" id="bus_name" name="bus_name">

rules : {
    first_name1 : {
        required: function(element){
           return $("#bus_name").val().length = 0;
        }
    },
    last_name1 : {
        required : function(element){
           return $("#bus_name").val().length = 0;
        }
    },
    bus_name1: {
        required : function(element){
          return ($("#first_name").is(':empty') && $("#last_name").is(':empty') ? true : false);
    }
}

我也试过创建自定义方法。不用说它没有用。

$.validator.addMethod("busnameRequired", function(value, element) {
var firstname1 = $("#first_name").val().length,
        lastname1 = $("#last_name").val().length;

if(firstname + lastname == 0) {
  return true;
}else{
    return false;
} 
}, "Enter Business Name");

提前致谢!

条件规则:

你在第一次尝试时遇到了各种小问题...

  1. 您在 first_name1 上声明了规则,但此字段名为 first_name。该插件需要正确的 name 属性。

  2. 您在 last_name1 上声明了规则,但此字段名为 first_last。该插件需要正确的 name 属性。

  3. 您在 bus_name1 上声明了规则,但此字段名为 bus_name。该插件需要正确的 name 属性。

  4. 您正在检查某些规则的长度,但在其他规则上检查 :empty。对所有这些都使用 .is(':blank')

演示:http://jsfiddle.net/n8gvvb92/


自定义方法:

在您的自定义规则中,您的逻辑是倒退的。当名称字段为空时,您目前正在 returning true。在这种情况下,您需要 return false 以便触发验证错误消息。

你也想在这里使用 .is(':blank')

这样的东西更接近您想要的,但仍需要一些工作。

$.validator.addMethod("busnameRequired", function (value, element) {
    return ($("#first_name").is(':blank') && $("#last_name").is(':blank')) ? false : true;
}, "Enter Business Name");