【问题标题】:Jquery validate dependencies between fields arrayJquery验证字段数组之间的依赖关系
【发布时间】:2013-08-06 09:42:28
【问题描述】:

我想要使用 Jquery Validate Plugin 验证以下表单:

<div class="group">
   <input type="checkbox" name="prod[]" value="1">
   <input type="text" name="quantity[]" value="1">
</div>
<div class="group">
   <input type="checkbox" name="prod[]" value="2">
   <input type="text" name="quantity[]" value="1">
</div>
<div class="group">
   <input type="checkbox" name="prod[]" value="3">
   <input type="text" name="quantity[]" value="1">
</div>

..等

我的问题是在检查相对复选框时必须需要数量字段。 对于验证,我编写了以下代码(但它不起作用)

rules: {
   "prod[]": { //ok it works!
      required: true,
      minlength: 1
   },
   "quant[]": { //not works
      required: {
         depends: function(element) {
            var v = $(this).parent().find('input[type=checkbox]').is(':checked');
            return v;
         }
   }
},...

我该怎么做? 谢谢..

【问题讨论】:

    标签: jquery arrays validation dependencies field


    【解决方案1】:

    你走在正确的轨道上,但你只是犯了一个小错误。依赖调用的上下文不是有问题的元素,它是别的东西。因此,您不能在您的依赖函数中引用this,而是引用element

    $(element).parent().find('input[type=checkbox]').is(':checked');
    

    就是这样,之后就可以了。我不认为你也不需要让它成为一个依赖函数,所需的选项也可以是一个函数:

    required: function(element){
       return $(element).parent().find('input[type=checkbox]').is(':checked');
    }
    

    【讨论】:

    • 现在最后一个问题是错误标签总是附加到字段数组的第一个元素上。其实比如最后一组编译出错,第一组就显示notify..为什么?
    • 验证通过每个输入的name 属性进行,因此尽管您按一件事对它们进行分组,但从逻辑上讲,所有prod[] 元素都是相同的“组”。无论如何,为了解决您的问题,您需要添加一个 errorPlacement 选项来验证,然后自己将错误标签放在那里。
    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多