经过搜索,我发现了类似于处理SELECT数组或者Require_From_Group的问题,但没有使用这两个问题,并且似乎无法兼顾两者。
代码(目前)因此:
<form id="frmMeeting" ...>
<select name="internal_attendees[]" id="internal_attendees" size="6" class="attendees attendee-group" multiple="multiple"></select>
<select name="external_attendees[]" id="external_attendees" size="6" class="attendees attendee-group" multiple="multiple"></select>
</form>
<script src="assets/scripts/jquery.validate.js" type="text/javascript"></script>
<script src="assets/scripts/additional-methods.js" type="text/javascript"></script>
var validator = $("#frmMeeting").validate({
errorElement: "span",
rules: {
'internal_attendees[]': {
require_from_group: [1, ".attendee-group"]
},
'external_attendees[]': {
require_from_group: [1, ".attendee-group"]
}
}
});
我已根据另一个问题更改了jQuery.validate.js以允许验证数组:
checkForm: function() {
this.prepareForm();
for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
if (this.findByName( elements[i].name ).length != undefined && this.findByName( elements[i].name ).length > 1) {
for (var cnt = 0; cnt < this.findByName( elements[i].name ).length; cnt++) {
this.check( this.findByName( elements[i].name )[cnt] );
}
} else {
this.check( elements[i] );
}
}
return this.valid();
}
我已经尝试了各种组合和答案来验证组,但是想知道挑战是否是SELECT数组而不是INPUT数组。
目前正在接收正确的&#34;请填写至少其中一个字段。&#34;反对这两个字段的消息,但我似乎无法通过验证(即使两个SELECT都有数据)。
有什么建议吗?
答案 0 :(得分:1)
这里的问题是require_from_group仅检查元素是否具有值:
isValid = $fields.filter( function() {
return validator.elementValue( this );
} ).length >= options[ 0 ];
空数组将返回true,例如Boolean([])
,因此html <select multiple="multiple">
被视为始终填充。因此,整个require_from_group验证为true。
为了解决这个问题,我用这个经过调整的版本替换了内置的require_from_group:https://gist.github.com/RegisFrey/d260c1c150ab398b6231790b23a6fffc