我目前正在开发一个具有以下代码的项目
$('form').validate({
rules: {
....
'final_input': {
require:true
}
},
ignore: ':hidden'
});
我有一个自定义下拉列表插件,它将根据隐藏的输入生成。代码看起来像
<input type="checkbox" />
<div id="dropdownlist" style="display: none">
<div class="option"></div>
<div class="option"></div>
<div class="option"></div>
<input id="final_input" name="final_input" type="text" style="display: none" />
</div>
下拉列表也会隐藏,直到选中复选框。目前,它将忽略所有隐藏的元素。所以我的final_input将不会被验证。如果我把一些东西忽略如下:hidden:not('#final_input')。无论如何,它都会验证它。但是我只想在下拉列表可见时验证它。有没有人知道我怎样才能从忽略中排除final_input只有在可见的下拉列表中?或者选中复选框?
答案 0 :(得分:0)
相反,包含/排除隐藏的输入元素,使用depends
方法使required
规则依赖于其他内容。
为了简化演示,我的示例不使用自定义下拉菜单,但是,您可以使用一个,我的方法将使用相同的方法。 To disable the ignoring of all hidden fields, use ignore: []
在此基本演示中,勾选复选框或显示下拉列表时,文本字段仅为required
。
ignore: [], // <-- do not ignore any hidden fields
rules: {
final_input: {
required: {
depends: function () {
return ( $('#dropdownlist').is(':visible') || $('#check').is(':checked') );
}
}
}
}
DEMO(隐身选择):http://jsfiddle.net/AZYpf/
相同的DEMO(可见选择):http://jsfiddle.net/AZYpf/1/