:禁用在Jquery Validate忽略子句中不起作用的选择器



我在一个HTML页面上有多个AJAX填充的下拉列表。表单使用JQuery Validate进行验证。

我已经将下拉列表设置为"禁用",直到AJAX完成,此时禁用的属性将被删除。

这些字段的内容是强制性的。我想验证它们,即使它们被禁用,以防止用户提交仍在加载强制性AJAX数据的表单。

我的HTML是:

<form id="myform">
<select name="foo" id="foo" disabled="disabled">
<option value="">Please Select</option>
<option value="1">Option1</option>
</select>
<br/>
<select name="bar" id="bar">
<option value="">Please Select</option>
<option value="1">Option1</option>
</select>
<br/>
<input type="submit"/>
</form>

我在JQuery Validate中使用了以下忽略参数,如下面的评论中所建议的:

$(document).ready(function() {
$('#myform').validate({
ignore:[],
rules: {
foo: {
required: true
},
bar: {
required: true
}
}
});
});

Validate脚本似乎仍然没有忽略字段的禁用状态。我做错了什么?

http://jsfiddle.net/aekntmor/

我尝试将一个类添加到禁用的下拉列表中,然后修改脚本。

<select name="foo" id="foo" class="validate-disabled" disabled="disabled">
<option value="">Please Select</option>
<option value="1">Option1</option>
</select>
ignore: ':disabled:not(.validate-disabled)',

使用此插件无法完成。

我不确定验证禁用元素的方法是否是一个好主意,也不确定是否有助于获得良好的UX(用户体验(,开发人员特别排除了禁用元素。

查看jQueryValidate插件1.19.3版本的源代码,可以看到任何禁用的元素都不会被考虑进行验证:

elements: function() {
...
return $( this.currentForm )
.find( ... )
.not( "... :disabled" ) ....

最新更新