使用jquery进行复选框验证

时间:2012-03-27 14:05:02

标签: jquery jquery-ui

我正在寻找一段时间,我找不到适合我的东西。

我有这个复选框:

 <%= Html.CheckBox("cbCodigo") %> <label class="inline" for="Codigo">Codigo</label>
 <%= Html.CheckBox("cbNombreCliente") %> <label class="inline" for="NombreCliente">Nombre del cliente</label>
 <%= Html.CheckBox("cbCiudad") %> <label class="inline" for="Ciudad">Ciudad</label>

我想验证文本框更改时只检查了一个,类似这样,并使用jQuery的.validate,我不知道验证这个的最佳方法。

tbCodCliente是我用作搜索参数的文本框,复选框是文本框自动完成功能的参数或值

$('#tbCodCliente').change(function() {
     if ($('#cbCodigo').attr('checked', false) &&
          $('#cbNombreCliente').attr('checked', false) &&
          $('#tbCheckbox').attr('checked', false)) {

          // function for validate method          
     }
});

我试图以这种方式验证,但我不知道这是否是最佳方式。

编辑: 我想要这样的东西,但仍然可以找到它是如何工作的

('#tbCodCliente').change(function() {
    if( $("input:checked").length == 0 ) {
        $("#request-form").validate({
             rules: {
                 checkbox: { 
                     required: 'input[type="checkbox"]:checked',
                     minlength: 1
                 }   
             },
             messages: {
                 checkbox: {"Please check at least one."}
             }
        })        

    }
});

2 个答案:

答案 0 :(得分:2)

如果这些是页面上唯一可用的复选框,那么您可以尝试按照jQuery语句进行检查:

if( $("input:checked").length == 1 )

编辑:

更准确地说,您可以将验证码更改为以下内容:

$('#tbCodCliente').change(function() {
   if( $("input:checked").length == 1 ) {
       //Do stuff here
   }
});

答案 1 :(得分:1)

选中任何一个复选框后,这将取消选中其他复选框。

$('input:checkbox').change(function () {
        if (this.checked) {
            $('input:checkbox:not(#'+this.id+')').attr('checked', false);
        }
}); 

演示:http://jsfiddle.net/5btfe/

对于单一复选框选择的检查,您可以参考epuri的答案,这是非常正确的。