我正在尝试使用jquery验证器验证具有相同名称的两个输入..
<script src='
http://code.jquery.com/jquery-latest.min.js '></script>
<script src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js'></script>
<script>
$(document).ready(function(){
$('#frm').validate();
$("[name=inp_text]").each(function(){
$(this).rules("add", {
required: true,
checkValue: true
});
});
$.validator.addMethod("checkValue", function(value, element) {
var response = ((value > 0)&&(value <= 100))||((value == 'test1')||(value =='test2'));
return response;
}, "invalid value");
})
</script>
<form id='frm' method='post'>
<input type='text' name='inp_text'/><br>
<input type='text' name='inp_text'/><br>
<input type='submit' name=''/>
</frm>
但是当我运行这段代码时,它只会验证第一个输入,而第二个输入会被忽略
我也尝试过使用<input type='text' name='inp_text[]'/><br>
,但仍无效。
我应该改变什么......?
提前致谢
答案 0 :(得分:16)
“我正在尝试使用jquery验证具有相同名称的两个输入 验证者......“
<input type='text' name='inp_text'/>
<input type='text' name='inp_text'/>
“但是当我运行此代码时,它只验证第一个输入和第二个输入 输入被简单地忽略“
input
的{{1}}个type="text"
字段不能与name
相同,否则此插件将无法正常运行。 name
属性必须是唯一的。 (name
唯一的一个例外是,复选框或无线电输入的“分组”将共享相同的name
,因为相应的提交是单点数据。但是,{对于每个复选框和无线电元素,{1}}必须仍然是唯一的。)
“我应该改变什么......?”
使每个name
属性都是唯一的。
name
然后使用“开始于”选择器<input type='text' name='inp_text[1]'/>
<input type='text' name='inp_text[2]'/>
...
^=
工作演示:http://jsfiddle.net/PgLh3/
注意:您还可以在使用$("[name^=inp_text]").each(function () {
$(this).rules("add", {
required: true,
checkValue: true
});
});
方法时按id
定位元素,但是对于这种情况,没有任何问题得到解决,因为插件仍然需要每个rules('add')
元素上的唯一 name
。
答案 1 :(得分:0)
添加如下规则或消息的配置
rem %~
更改jquery.validate.js中的代码 方法名称:元素
替换以下
multipleInputSharedName: {
inp_text: true
}
以下
if ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
return false;
}
答案 2 :(得分:-1)
是的,JQuery validate只会验证第一次出现。 您为文本框使用不同的名称。 要么 您可以使用相同的名称但不同的ID。 并根据身份证明进行检查。
$(“#myform”)。validate({rules:{ #id_of_field:{ required:true,checkValue:true }}} ;;
答案 3 :(得分:-1)
友!
为了验证文本框/复选框/选择具有相同名称 使用以下它对我来说很好。
这里&#39; ctryId&#39;是选择框的名称。
function validateCountry(){
inp = document.getElementsByTagName("select");
for ( var i = 0; i < inp.length; ++i ) {
if (inp[i].name =="ctryId" && inp[i].value==''){
alert('plesae select a country!');
return false;
}
}
return true;
}
这里&#39; minVal&#39;是文本框的名称
function validateMinimumVal(){
inp = document.getElementsByTagName("TEXT");
for ( var i = 0; i < inp.length; ++i ) {
if (inp[i].name =="minVal" && inp[i].value==''){
alert('plesae Add a MINIMUM VALUE!!');
return false;
}
}
return true;
}
希望这有帮助!! 贾根