我有一个包含三个字段的表单。前两个输入中的一个是必需的(可以是一个也可以是两个),并且总是需要第三个字段。对于前两个,我已将它们添加到一个组来处理它。到目前为止,这是我的代码
var validator = $("#my_form").validate({
groups: {
datagroup: "fieldOne fieldTwo"
},
rules: {
fieldOne: {
require_from_group: [1, '.datagroup'],
email: true,
maxlength: {
param: 40,
depends: function (element) {
var valTwo = $('#fieldTwo').val();
return !valTwo || (valTwo.length < 8) || (valTwo.length > 18);
}
}
},
fieldTwo: {
require_from_group: [1, '.datagroup'],
minlength: {
param: 8,
depends: function (element) {
var valOne = $('#fieldOne').val();
return !valOne || (valOne.length > 40);
}
},
maxlength: {
param: 18,
depends: function (element) {
var valOne = $('#fieldOne').val();
return !valOne || (valOne.length > 40);
}
}
},
fieldThree: {
}
}
});
这是我的问题。以上处理前两个输入没有问题。第三个输入是使用JQuery Autocomplete在用户键入时向用户显示列表。我需要确保提交的值在该列表中。我还需要确保提供了一个值。
我不确定是否需要将第三个输入组合到前两个组中?我也不确定如何确保该值在我的列表中。
任何建议表示赞赏。
答案 0 :(得分:0)
在脚本的开头,制作原始名称列表的隐藏副本:
var values = [];
$('#autocomplete').find('option').each(function(){
values.push(this.value);
});
避免人们向列表中添加名称,并保留原始名称列表以便在jQuery验证器中检入:
depends: function (element) {
var valOne = $('#autocomplete').val();
return !valOne || (values.indexOf(valOne) < 0);
}