使用jquery验证器验证具有相同名称的多个文本框仅验证第一个输入

时间:2013-04-01 07:27:13

标签: jquery forms jquery-validate

我正在尝试使用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>,但仍无效。

我应该改变什么......?

提前致谢

4 个答案:

答案 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;
 }

希望这有帮助!! 贾根

相关问题