我一直在寻找,但没有找到满足我特定需求的解决方案。我总共有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");
提前致谢!
答案 0 :(得分:1)
条件规则:
第一次尝试时你有各种各样的小问题......
您在first_name1
上声明了规则,但此字段的名称为first_name
。该插件需要正确的name
属性。
您在last_name1
上声明了规则,但此字段的名称为first_last
。该插件需要正确的name
属性。
您在bus_name1
上声明了规则,但此字段的名称为bus_name
。该插件需要正确的name
属性。
您正在检查某些规则的长度,但检查另一条规则上的: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");