验证具有与jquery验证器名称相同的多个文本框仅验证第一输入(validating multipl

2019-08-18 11:57发布

我想,以验证其与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>但仍然没有工作。

我应该怎么改...?

提前致谢

Answer 1:

“我想,以验证其与jQuery验证两个相同名字的投入......”

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

“但是当我运行这段代码只验证第一输入和第二输入被简单地忽略”

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

“我应该改变......”

使每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')的方法,但是这种情况下,没有什么不能解决的,因为插件仍需要一个独特的 name每个上input元素。



Answer 2:

添加配置类似像规则或消息如下

multipleInputSharedName: {
        inp_text: true
    }

在jquery.validate.js方法名称更改代码:元素

替换以下

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


Answer 3:

是的,jQuery验证只能验证一次出现。 您使用文本框不同的名称。 或者您可以使用相同的名称,但不同的ID。 并根据ID申请检查。

$( “#myForm会”)验证({规则:{#id_of_field:{要求:真实,校验值:真}}});



Answer 4:

朋友们!

具有相同的名称,以验证该文本框/复选框/选择使用它是为我工作的罚款以下。

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

希望这可以帮助!! 贾根



文章来源: validating multiple textbox having same name with jquery validator validates only first input