8

我正在尝试使用 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

4 回答 4

18

“我正在尝试使用 jquery 验证器验证具有相同名称的两个输入......”

<input type='text' name='inp_text'/>
<input type='text' name='inp_text'/>

“但是当我运行这段代码时,它只验证第一个输入,而第二个输入被忽略”

您不能有两个相同的input字段,否则此插件将无法正常工作。该属性必须是唯一的。 (唯一的一个例外是,复选框或单选输入的“分组”将共享相同的内容,因为相应的提交是单点数据。但是,对于复选框和单选元素的每个分组,仍然必须是唯一的。)type="text"namenamenamenamename

“我应该改变什么……?

使每个name属性独一无二。

<input type='text' name='inp_text[1]'/>
<input type='text' name='inp_text[2]'/>

然后使用“开始于”选择器,^=...

$("[name^=inp_text]").each(function () {
    $(this).rules("add", {
        required: true,
        checkValue: true
    });
});

工作演示:http: //jsfiddle.net/PgLh3/

注意:您也可以id在使用该rules('add')方法时定位元素,但是在这种情况下,什么都没有解决,因为插件仍然需要每个元素的唯一性。 nameinput

于 2013-04-01T14:24:39.877 回答
0

添加如下配置,例如规则或消息

multipleInputSharedName: {
        inp_text: true
    }

更改 jquery.validate.js 中的代码方法名称:elements

替换以下

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;
            }
于 2016-01-14T01:54:20.253 回答
-1

是的,JQuery validate 只会验证第一次出现。您对文本框使用不同的名称。或者您可以使用相同的名称但不同的 ID。并根据身份证申请支票。

$("#myform").validate({ rules: { #id_of_field: { required: true, checkValue: true } } });

于 2013-04-01T12:12:56.277 回答
-1

朋友们!

为了验证具有相同名称的文本框/复选框/选择,请使用以下内容,它对我来说工作正常。

这里的“ctryId”是选择框的名称。

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

希望这可以帮助!!贾根

于 2015-02-13T19:40:42.963 回答