2011-09-08 14 views
5

divを表示/非表示するラジオボタンがあります。すべての目に見える要素は「必須」ですが、無視追加:「:隠された」:jqueryバリデーター - 表示されている要素の検証のみ

<script type="text/javascript"> 

     $(document).ready(function(){ 
      $("#myForm").validate({ 
       rules: { 
        name: "required", 
        age: "required", 
        height: "required", 
        ignore: ":hidden" 
       } 
      }) 
     }); 

    </script> 
</head> 
<body> 
    <form id="myForm" name="myForm" method="post" action="" > 
     <input type="radio" name="checkAge" value="adult" onclick="$('#minorRequisites').hide();" />Adult<br/> 
     <input type="radio" name="checkAge" value="minor" onclick="$('#minorRequisites').show()" checked="checked"/>Child<br/> 
     Name <input id="name" name="name" type="text" /><br/> 
     <div id="minorRequisites"> 
      Age <input id="age" name="age" type="text" /><br/> 
      Height <input id="height" name="height" type="text" /><br/> 
     </div> 
     <input type="submit" /> 
    </form> 
</body> 

私のことができるようにしたい検証ルールの後、動作しません... ここではコードです"大人"がチェックされている場合にのみ名前を与えるフォームを提出...任意のアイデア? :)

答えて

10

あなたは、彼らが表示されていないなら、それらは要素を無視持っているあなたのrequiredルールでdependency expressionsを指定することができます。

$("#myForm").validate({ 
    rules: { 
     name: "required", 
     age: { 
      required: "#age:visible" 
     }, 
     height: { 
      required: "#height:visible" 
     } 
    } 
}); 

あなたはthis fiddleで結果を見ることができます。

EDIT:ignoreも動作しますが、それはオプション、ないルールですので、あなたが書く必要があります。

$("#myForm").validate({ 
    ignore: ":hidden", 
    rules: { 
     name: "required", 
     age: "required", 
     height: "required" 
    } 
}); 
+0

ありがとうございます! :D非常に奇妙です。無視してください。( ":hidden")は動作しません。 – Caveman

+0

@Caveman、 'ignore'はオプションでありルールではないからです。私は私の答えを更新します。 –

+0

これは ';' 'for'の終わりに、なぜそれが動作していないのだろうと思っていた...ありがとう! :) – Caveman

0

ignore: ":not(:visible)"の代わりignore: ":hidden"を試してみてください。

関連する問題