0

嗨,现在我搜索了几个小时的解决方案。我有 20 个字段(下拉菜单),答案是“是”和“否”。现在我想验证,用户必须对 20 个“是”中的 3 个说“是”。这是从 20 开始的无所谓。

例如,20 个下拉菜单之一...

<select name="dd1" id="dd1">
<option value="yes">Yes</option>
<option value="no" selected="selected">No</option>
</select>

有没有人有解决方案的想法?

对于验证,我使用例如这种格式:

 $(document).ready(function(){

    $("#register").validate({

        rules: {

            surname: {
                required: true,
                minlength: 3
            },

            messages: {
            surname: {
                required: "xxx",
                minlength: "xxx"
            },
            errorPlacement: function (error, element) {
             if ( element.is(":checkbox") )
             error.appendTo(element.parent("td").next("td"));
             else if ( element.is(":radio") )
             error.appendTo(element.parent("td").next("td"));
             else
             error.appendTo( element.parent());
            }

    });

  });
4

2 回答 2

2
if ( $('select.my20drops[value="yes"]').length > 3 ) {
    // do something!
}
于 2013-03-24T00:08:49.833 回答
2

修复@adeneo 的选择器...

$('select.mydrops option[value="yes"]:selected')

然后使用插件的addMethod方法,我创建了一个自定义规则。

工作演示:http: //jsfiddle.net/UBhce/

$(document).ready(function () {

    $.validator.addMethod('customrule', function(value, element, param) {
        return ( $('select.mydrops option[value="yes"]:selected').length >= param ); 
    }, "please select 'yes' to at least {0} items");

    $('#myform').validate({ // initialize the plugin
        groups: {
            whatever: "dd1 dd2 dd3 dd4"  // grouping all messages into one
        }
    });

    $('.mydrops').each(function() { // apply rule to all selects at once
        $(this).rules('add', {
            customrule: 3  // using a parameter for number of required selects
        });
    });

});

我还添加class="mydrops"了所有select元素并确保所有id' 和names' 都是唯一的。

<select name="dd1" id="dd1" class="mydrops">
    <option value="yes">Yes</option>
    <option value="no" selected="selected">No</option>
</select>
于 2013-03-24T03:19:01.077 回答