首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用验证插件jquery验证输入数组

如何使用验证插件jquery验证输入数组
EN

Stack Overflow用户
提问于 2014-07-10 15:08:17
回答 9查看 106.6K关注 0票数 38

我是jquery验证插件的新手,但我想知道如何使用验证插件验证输入框数组。

下面是html代码。

代码语言:javascript
复制
<form id="transport-form">
  <input type="text" name="qty[]" id="qty1">
  <input type="text" name="qty[]" id="qty2" >
  <input type="text" name="qty[]" id="qty3">
  <input type="text" name="qty[]" id="qty4">
  <input type="submit value="submit">
</form>

下面是jquery代码

代码语言:javascript
复制
jQuery("#transport-form").validate({
        rules: {
            'qty[]': {
                required: true
            }
        },
    });

但每次我单击submit时,它只验证第一个值。rest所有同名的值都不会被验证。请帮帮忙。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2014-07-10 15:43:54

有时我们需要验证输入元素的数组:例如-

代码语言:javascript
复制
<form name="signupForm" class="cmxform" id="signupForm" method="get" action="">
    <select name="category[]" id="cat_1">
    <option value="">Select One</option>
    <option value="1">aa</option>
    <option value="2">bb</option>
    <option value="3">cc</option>
    <option value="4">dd</option>
    </select>

    <select name="category[]" id="cat_2">
    <option value="">Select One</option>
    <option value="5">ee</option>
    <option value="6">ff</option>
    <option value="7">gg</option>
    <option value="8">hh</option>
    </select>

    <select name="category[]" id="cat_3">
    <option value="">Select One</option>
    <option value="9">ii</option>
    <option value="10">jj</option>
    <option value="11">kk</option>
    <option value="12">ll</option>
    </select>

    <input class="submit" type="submit" value="Submit">
    </form>

现在我们将使用jquery验证插件jquery.validate.js来验证表单。条件是,用户将不得不从每个下拉列表中选择类别。验证的脚本如下所示-

代码语言:javascript
复制
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript">
    $(document).ready(function() {
    // validate the comment form when it is submitted
    $("#signupForm").validate({
        rules: {
            "category[]": "required"
        },
        messages: {
            "category[]": "Please select category",
        }
    });
});
</script>

现在的问题是,现成的jquery.validate.js只验证category[]的第一个元素。因此,我们需要对其进行一些修改。

在jquery.validate.js中,我们可以找到一个名为checkForm的函数,我们必须修改它,如下所示:

代码语言:javascript
复制
checkForm: function() {
    this.prepareForm();
    for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) {
        if (this.findByName(elements[i].name).length != undefined && this.findByName(elements[i].name).length > 1) {
            for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) {
                this.check(this.findByName(elements[i].name)[cnt]);
            }
        } else {
            this.check(elements[i]);
        }
    }
    return this.valid();
}

我刚从http://www.codeboss.in/web-funda/2009/05/27/jquery-validation-for-array-of-input-elements/得到这个解决方案,希望这能帮助一些人..

票数 62
EN

Stack Overflow用户

发布于 2015-01-28 04:29:31

您可以传递一个选项来忽略字段名的一部分;对于原始的帖子注释,在HTML中有很多使用name[]样式名称的用例,特别是使用PHP。

代码语言:javascript
复制
$("#my-form").validate({
  submitHandler: function(form) {
    form.submit();
  },
  ignore: [],
  rules: {
    'category[]': {
      required: true
    }
  }
});
票数 20
EN

Stack Overflow用户

发布于 2016-12-02 00:04:15

我注意到我使用的jQuery验证插件只检测第一个具有特定名称的元素。

另一种使jQuery验证插件也能检测到第一个以外的所有输入的方法是使名称唯一。因此,您可以替换:

代码语言:javascript
复制
<input type="text" name="qty[]" />
<input type="text" name="qty[]" />
<input type="text" name="qty[]" />
<input type="text" name="qty[]" />

通过以下方式:

代码语言:javascript
复制
<input type="text" name="qty[0]" />
<input type="text" name="qty[1]" />
<input type="text" name="qty[2]" />
<input type="text" name="qty[3]" />
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24670447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档