javascript - Jquery 验证插件名称与 Zend_Form 冲突

标签 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 验证插件始终验证隐藏字段而不是复选框。有没有办法让它验证复选框?我意识到我可以更改我的 Zend Decorator 以省略隐藏字段,但我想找到一个纯 JavaScript 解决方案。

解决方案

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

1) 添加ignore: "input[type=hidden]"作为验证方法的选项。

$('#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;
        });
    },

最佳答案

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

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

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

检查documentation了解更多信息

关于javascript - Jquery 验证插件名称与 Zend_Form 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456107/

相关文章:

javascript - 如何使用 $watch 稳定的方式

javascript - 如何为 Angular 表进行分页?

javascript - 如何将base64解码为vue.js中输入类型文件中的文件格式?

javascript - Kendo UI 网格 - 更新不持久

jquery - 使用 jquery 单击第一个显示未设置为无的单选按钮

javascript - 验证不适用于简单的 html 形式

javascript - 如何验证数字是否为整数

嵌套表格的 HTML5 有效性

javascript - for 循环中的引用数组生成悬停事件

javascript - 无法使 ng-repeat 与 Angular Material 一起工作