validation与jqueryvalidation程序具有相同名称的多个文本框只validation第一个input
我想validation与jqueryvalidation器具有相同名称的两个input。
<script src=' jquery-1.11.1.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>
但是当我运行这个代码时,它只validation第一个input,第二个input被忽略
我也尝试使用<input type='text' name='inp_text[]'/><br>
但仍然无法正常工作。
我应该改变什么…?
提前致谢
“我正在validation与jqueryvalidation器具有相同名称的两个input…”
<input type='text' name='inp_text'/> <input type='text' name='inp_text'/>
“但是当我运行这个代码时,它只validation第一个input,第二个input被忽略”
你不能有两个同名的type="text"
input
字段,否则这个插件将无法正常工作。 name
属性必须是唯一的。
“我应该改变什么…?
使每个name
属性唯一。
<input type='text' name='inp_text[1]'/> <input type='text' name='inp_text[2]'/>
然后使用“开始”select器, ^=
…
$("[name^=inp_text]").each(function () { $(this).rules("add", { required: true, checkValue: true }); });
工作演示: http : //jsfiddle.net/PgLh3/
注意 :在使用rules('add')
方法时,您也可以通过id
来定位元素,但是对于这种情况,没有任何东西可以解决,因为插件在每个input
元素上仍然需要唯一的 name
。
像下面的规则或消息添加configuration
multipleInputSharedName: { inp_text: true }
更改jquery.validate.js中的代码方法名称:元素
replace如下
if ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) { return false; }
与以下
if ( (!validator.settings.multipleInputSharedName[this.name] && this.name in rulesCache) || !validator.objectLength( $( this ).rules() ) ) { return false; }
是的,JQueryvalidation将只validation第一次出现。 您使用不同的文本框名称。 或者您可以使用相同的名称,但不同的ID。 并根据身份证进行检查。
$(“#myform”)。validate({rules:{#id_of_field:{required:true,checkValue:true}}});
朋友们!
为了validation文本框/checkbox/select具有相同的名称使用以下它对我来说工作正常。
这里'ctryId'是select框的名称。
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; }
这里'minVal'是文本框的名字
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; }
希望这可以帮助!! 贾根