默认情况下,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/