默认情况下,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;
});
},
答案 0 :(得分:3)
您可以使用验证插件的ignore
选项。
$("#yorform").validate({
...
ignore: "input[type=hidden]"
})
这应该例如阻止插件验证任何隐藏的输入
查看documentation了解详情