无法使用jQuery.Validation来验证组中的SELECT数组和

时间:2016-04-14 08:34:46

标签: jquery arrays validation

经过搜索,我发现了类似于处理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都有数据)。

有什么建议吗?

1 个答案:

答案 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