Jquery验证插件名称与Zend_Form冲突

时间:2010-03-16 16:22:14

标签: javascript jquery validation plugins zend-form

默认情况下,Zend_Form会为表单中的每个复选框输入创建一个隐藏的输入字段。这些输入共享相同的名称。

<input type="hidden" name="zend-cb" value="">
<input type="checkbox" name="zend-cb" id="zend-cb" value="1">

我想要复选框,所以我在jquery插件验证器(http://bassistance.de/jquery-plugins/)中设置了以下规则:

'zend-cb': {
  required: true
}

不幸的是,Jquery Validation插件总是验证隐藏字段而不是复选框。有没有办法可以让它验证复选框?我意识到我可以改变我的Zend Decorator以省略隐藏字段,但我想找到一个纯粹的JavaScript解决方案。

解决方案

需要两个步骤来解决这个问题。

1)添加ignore:“input [type = hidden]”作为validate方法的选项。

$('#myForm').validate( {
   ignore: "input[type=hidden]",
   rules: { ... }
}

2)打开jquery.validate.js并更新findByName方法以使用忽略过滤器。 adamnfish在jquery插件网站上提交的错误报告。

findByName does not honour ignore settings

findByName: function( name ) {
        // select by name and filter by form for performance over form.find("[name=...]")
        var form = this.currentForm;
        return $(document.getElementsByName(name)).not(this.settings.ignore).map(function(index, element) {
            return element.form == form && element.name == name && element  || null;
        });
    },

1 个答案:

答案 0 :(得分:3)

您可以使用验证插件的ignore选项。

$("#yorform").validate({
    ...
    ignore: "input[type=hidden]"
})

这应该例如阻止插件验证任何隐藏的输入

查看documentation了解详情