2015-12-01 159 views
1

我一直在寻找,但还没有找到我的具体需求的解决方案。我总共有3个字段(first_name,last_name和business_name)。我希望用户输入名字和姓氏,或者只输入商家名称。jQuery验证需要两个字段或一个其他字段

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

<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"); 

在此先感谢!

+0

请不要编辑您的问题中的编码错误,从而可能会断开任何答案。 – Sparky

回答

1

条件规则:

您有各种小问题,在第一次尝试......

  1. 您宣布first_name1的规则,但这个领域被命名为first_name。该插件需要正确的name属性。

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

  3. 您宣布了一条规则bus_name1,但该字段名为bus_name。该插件需要正确的name属性。

  4. 您正在检查一些规则的长度,但在另一个检查:empty。改为使用.is(':blank')

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"); 
+0

感谢您的回应!你说得对,我从表单字段中删除了“1”。我查看了您提供的两个DEMO,但它不按我想要的方式工作。我很抱歉没有更清楚解释。 – user752746

+0

@ user752746,这两个演示程序正如您所描述的一样。这不仅仅是取消'1'的问题。 'first_last'仍然与'last_name'不一样。 – Sparky

+0

我希望用户输入(名字和姓氏)或只输入(商业名称)。第二个允许企业名称空白,姓和名都填充。但它确实适用于填写商户名称,名字和姓氏为空白。 – user752746

相关问题