jQuery validate需要两个字段或另一个字段

时间:2015-12-01 18:52:50

标签: jquery jquery-validate

我一直在寻找,但没有找到满足我特定需求的解决方案。我总共有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 个答案:

答案 0 :(得分:1)

条件规则:

第一次尝试时你有各种各样的小问题......

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

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

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

  4. 您正在检查某些规则的长度,但检查另一条规则上的:empty。而是在所有这些上使用.is(':blank')

  5. DEMO:http://jsfiddle.net/n8gvvb92/

    自定义方法:

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

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

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

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