0

フォームがあり、チェックボックスのグループがいくつかあります。以下のコードを見つけてください。

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"  />
<title>Untitled Document</title>

<script type="text/javascript" src="jquery-1-4-2.js"></script>
<script type="text/javascript" src="jquery_validate.js"></script>
<script type="text/javascript" src="jquery.keyfilter-   1.7.js"></script>
<script type="text/javascript" >
$(document).ready(function (){
        $("#mainfruit").click(function(){
            if($('#mainfruit').is(':checked')){
                $('input[id^="fruit_"]').attr ( "checked" , false );                
                $('input[id^="fruit_"]').attr ( "disabled" , false );
            }else{
                $('input[id^="fruit_"]').attr ( "checked" , false );                
                $('input[id^="fruit_"]').attr ( "disabled" , true );                
            }
        });
        $("#idchecktest").validate({
            rules: {
                name: {
                    required: true
                      },
                fruit: {
                    subselect: true
                      }
                },
            messages: {
                foldername: {
                        required: "<br>Please enter the name."
                    },
                fruit: {
                        subselect:"<br>Please select sub checkbox."
                      }
              },
            //errorClass: 'errortext',
            errorLabelContainer: "#messagebox"
        });
    });
$.validator.addMethod('subselect', function (value) { 
    if($('#mainfruit').is(':checked')){
        /*var che=$('input[id^="fruit_"]');
        var i=0;
        che.each(function (i){
            if($(this).is(':checked')){
                i=1;
                return true;
                //break;
            }else{
                i=0;
                //continue;
            }
        });*/
        if($("'input[id^="fruit_"]':checked").length>0){
            return true;
        }else{
            return false;
        }
    }else{
        return true;
    }
}, 'check atleast one checkbox');
</script>
</head>
<body>
<form name="checktest" action="" id="idchecktest" method="get">
<table width="200" border="1">
  <tr>
    <td>Name</td>
    <td><input type="text" name="name" /></td>
  </tr>
  <tr>
    <td>Select Fruits </td>
    <td><p>
      <input type="checkbox" name="fruit" id="mainfruit" />
      Fruits<br />
         <input type="checkbox" name="mango" id="fruit_mango" disabled="disabled" />
        Mango <br />
        <input type="checkbox" name="pineapple" id="fruit_pineapple" disabled="disabled"/>
        Pineapple<br />
        <input type="checkbox" name="watermellon" id="fruit_watermellon" disabled="disabled"/>
        watermellon        <br />
        <input type="checkbox" name="orange" id="fruit_orange" disabled="disabled"/>
Orange</p>      </td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><div id="messagebox"> </div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><label>
      <input type="submit" name="submit" id="submit" value="Submit" />
    </label></td>
  </tr>
</table>
</form>
</body>
</html>

上記のコードでは、jqueryフォーム検証プラグインを使用しました。次に、チェックボックスのグループにカスタム検証を追加します。つまり、ユーザーが[フルーツ]チェックボックスをオンにするたびに、その下にある少なくとも1つのチェックボックスを選択する必要があります。彼が果物のチェックボックスのみをチェックし、その下のチェックボックスをチェックしない場合、エラーメッセージが表示されます。

上記のコードでは、チェックボックスに関連するエラーメッセージが表示されますが、メインチェックボックス、つまりフルーツチェックボックスのチェックを外しても、それぞれのエラーメッセージは表示されません。1.jqueryコードの何が問題になっているのかを友達に教えてください。2.また、Flowersなどのチェックボックスの別のグループに同じカスタム検証機能を使用できることも知りたいです。

この友達に案内してください。ありがとう!

4

0 に答える 0