JQuery验证和复选框单击功能

时间:2011-01-06 21:35:26

标签: jquery-validate

我有一个基本的复选框点击功能,只允许用户在每个字段集中只点击一个复选框(有四个字段集,每个字段集包含多个复选框:

$(document).ready(function(){

$('input[type=checkbox]').click(function(){

    // get the fieldset class
    var fieldset = $(this).parents('fieldset').attr('class');

    // set the number of checked
    var numChecked = $('.'+fieldset+' input:checked').size();

    // if more than 1
    if(numChecked > 1){
        alert('Please select only one option per breakout session.')

$(本).attr( '检查',假);         }

}); 

然后我在表单上有一个提交功能,确认在发布表单之前至少选中了一个复选框:

$('form[name=mainForm]').submit(function(){

    var error = '';

    // loop through each fieldset
    $('fieldset',this).each(function(){

        // set the number of checked for this fieldset
        var numChecked = $('input:checked',this).size();

        // if none are checked
        if(!numChecked){
            // set the error var
            error = 'At least one of your time sessions has no checkbox selected!';
            // add class to show user
            $(this).addClass('errorSessions');
        }
        else{
            $(this).removeClass('errorSessions');
        }

    });

    // if any errors, show them and don't allow the form to be submitted
    if(error.length){
        alert(error);
        return false;
    }

   $("#mainForm").validate();

表格完美验证,第一次完美无瑕。问题是,如果您提交表单,则会进行验证,并且会出现错误“至少有一个时间会话没有选中复选框!” - 此时,如果您继续选择最初未检查的给定字段集中的多个复选框,它将忽略复选框单击功能,并允许您在字段集中选择多个复选框。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

好的,我明白了。该错误与脚本将类“errorsessions”添加到字段集有关,该字段集更改了字段集的唯一类名。通过向每个字段集添加唯一ID,然后将脚本更改为引用.attr('id');而不是.attr('class');问题已解决,并且在添加课程后,点击警报功能已恢复。

答案 1 :(得分:0)

您是否考虑使用单选按钮进行单选?这样您就不必检查多选,因为在给定组中不能选择多个单选按钮。