使用JQuery动态添加复选框并对其进行验证

时间:2019-02-24 01:40:38

标签: javascript jquery

我正在构建一个带有两个单选按钮的表单,是和否。

当选中“是”单选按钮时,将出现一组复选框(A组),而当选择“否”时,我的表单上将出现另一组复选框(B组)。

对于一组复选框A或B,必须至少选择一个复选框。

我必须使用JQuery来解决此问题。

当前,我能够显示设置A或B的复选框,但是我无法写入验证代码来检查是A还是B中是否选择了至少一个复选框,具体取决于是/否答案。< / p>

我的直觉是使用更改或单击事件处理程序,但这意味着为每个复选框编写事件处理程序,这似乎很冗长和多余。是否有一种JQuery方法可以对一组动态复选框有效地做到这一点?

<li><span style='color:black;'><strong>1. Yes or No? &nbsp;&nbsp;&nbsp;&nbsp;?</strong><br />
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="Q1_0" id="Q1_0a" value="yes" /><label for="Q1_0a">     Yes</label></span><br />
                  <li>&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="Q1_0" id="Q1_0b" value="no" /><label for="Q1_0b">     No</label><br />


               <li class="Q1_Y"><span style='color:black;'><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Yes: <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select all that apply:</strong><br />
                  <li class="Q1_Y">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="Q2" id="Q2_0" value="Ans1" /><label for="Q2_01">Ans1</label>&nbsp;&nbsp;&nbsp;
                  <li class="Q1_Y">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="Q2" id="Q2_1" value="Ans2" /><label for="Q2_02">Ans2</label>&nbsp;&nbsp;&nbsp;
                  <li class="Q1_Y">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="Q2" id="Q2_2" value="Ans3" /><label for="Q2_03">Ans3</label>&nbsp;&nbsp;&nbsp;


               <li class="Q1_N"><span style='color:black;'><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If No: <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select all that apply:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select all that apply:</strong><br />
                  <li class="Q1_N">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="Q3" id="Q3_0" value="Ans1" /><label for="Q3_0">Ans1</label>&nbsp;&nbsp;&nbsp;
                  <li class="Q1_N">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="Q3" id="Q3_1" value="Ans2" /><label for="Q3_1">Ans2</label>&nbsp;&nbsp;&nbsp;
                  <li class="Q1_N">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="Q3" id="Q3_2" value="Ans3" /><label for="Q3_2">Ans3</label>&nbsp;&nbsp;&nbsp;

jQuery(document).ready(function() {

jQuery(".Q1_Y").hide();
jQuery(".Q1_N").hide();


jQuery.validator.addMethod("checkboxesQ2", function(value, element) {
    return jQuery('input[name="Q2"]:checked').length > 0;
});

jQuery.validator.addMethod("checkboxesQ3", function(value, element) {
    return jQuery('input[name="Q3"]:checked').length > 0;
});

jQuery(“#ddd-form”).validate({         规则:{

        Q2_0 : { checkboxesQ2: true },
        Q2_1 : { checkboxesQ2: true },
        Q2_2 : { checkboxesQ2: true },
        Q2_3 : { checkboxesQ2: true },
        Q2_4 : { checkboxesQ2: true },
        Q2_5 : { checkboxesQ2: true },
        Q2_6 : { checkboxesQ2: true },


        Q3_0 : { checkboxesQ3: true },
        Q3_1 : { checkboxesQ3: true },
        Q3_2 : { checkboxesQ3: true },
        Q3_3 : { checkboxesQ3: true },
        Q3_4 : { checkboxesQ3: true },
        Q3_5 : { checkboxesQ3: true },
        Q3_6 : { checkboxesQ3: true },

    },
     messages: {


        Q2_0 : { required: "<span>*</span>" },
        Q2_1 : { required: "<span>*</span>" },
        Q2_2 : { required: "<span>*</span>" },
        Q2_3 : { required: "<span>*</span>" },
        Q2_4 : { required: "<span>*</span>" },
        Q2_5 : { required: "<span>*</span>" },
        Q2_6 : { required: "<span>*</span>" },

        Q3_0 : { required: "<span>*</span>" },
        Q3_1 : { required: "<span>*</span>" },
        Q3_2 : { required: "<span>*</span>" },
        Q3_3 : { required: "<span>*</span>" },
        Q3_4 : { required: "<span>*</span>" },
        Q3_5 : { required: "<span>*</span>" },
        Q3_6 : { required: "<span>*</span>" },
    },
    submitHandler: function(form) {
        form.submit();
    },
    errorElement: "em",
    errorPlacement: function(error, element) {
        console.log("error",error)
        console.log("element",element)
        error.appendTo( element.parents("li").prev("li").find('span') );
    },

});

 jQuery('#Q1_0a').click(function(e) {
    jQuery( ".Q1_Y" ).show();
    jQuery( ".Q1_N" ).hide();

    jQuery('[name=Q2_0').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ2: "<span>*</span>" }
    });
    jQuery('[name=Q2_1').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ2: "<span>*</span>" }
    });
    jQuery('[name=Q2_2').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ2: "<span>*</span>" }
    });
    jQuery('[name=Q2_3').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ2: "<span>*</span>" }
    });
    jQuery('[name=Q2_4').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ2: "<span>*</span>" }
    });
    jQuery('[name=Q2_5').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ2: "<span>*</span>" }
    });
    jQuery('[name=Q2_6').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ2: "<span>*</span>" }
    });
    jQuery('[realName=Q3_0').rules('remove','checkboxesQ3');
    jQuery('[realName=Q3_1').rules('remove','checkboxesQ3');
    jQuery('[realName=Q3_2').rules('remove','checkboxesQ3');
    jQuery('[realName=Q3_3').rules('remove','checkboxesQ3');
    jQuery('[realName=Q3_4').rules('remove','checkboxesQ3');
    jQuery('[realName=Q3_5').rules('remove','checkboxesQ3');
    jQuery('[realName=Q3_6').rules('remove','checkboxesQ3');

});

jQuery('#Q1_0b').click(function(e) {
    jQuery( ".Q1_Y" ).hide();
    jQuery( ".Q1_N" ).show();

    jQuery('[name=Q3_0').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ3: "<span>*</span>" }
    });
    jQuery('[name=Q3_1').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ3: "<span>*</span>" }
    });
    jQuery('[name=Q3_2').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ3: "<span>*</span>" }
    });
    jQuery('[name=Q3_3').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ3: "<span>*</span>" }
    });
    jQuery('[name=Q3_4').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ3: "<span>*</span>" }
    });
    jQuery('[name=Q3_5').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ3: "<span>*</span>" }
    });
    jQuery('[name=Q3_6').rules('add', {
        checkboxes: true,
        messages: { checkboxesQ3: "<span>*</span>" }
    });
    jQuery('[realName=Q2_0').rules('remove','checkboxesQ2');
    jQuery('[realName=Q2_1').rules('remove','checkboxesQ2');
    jQuery('[realName=Q2_2').rules('remove','checkboxesQ2');
    jQuery('[realName=Q2_3').rules('remove','checkboxesQ2');
    jQuery('[realName=Q2_4').rules('remove','checkboxesQ2');
    jQuery('[realName=Q2_5').rules('remove','checkboxesQ2');
    jQuery('[realName=Q2_6').rules('remove','checkboxesQ2');
});

});

0 个答案:

没有答案