2011-07-04 29 views
26

jqueryを使用する特定のチェックボックスがオンの場合、必要な選択ボックスから選択したい(つまり、デフォルトのままにすることはできません)。私のコード:JQueryの検証 - チェックボックスがオンの場合に必要です。

$(document).ready(function(){ 
    $("#myForm").validate({ 
    rules: { 
     myDropDown: { 
     required: {  
      depends: function(element) { 
      return $("#myCheckbox:checked") 
      } 
     } 
     } 
    } 
    }) 
}) 

HTML:

<input type="checkbox" name="myCheckbox" id="myCheckbox" value="1"> 
<select name="myDropDown" id="myDropDown"> 
    <option value="" selected></option> 
    <option value="1">Choice 1</option> 
    <option value="2">Choice 2</option> 
    <option value="3">Choice 3</option> 
</select> 

だけでなく、コードが、それは私がジャバスクリプトの次のセクションとして持っているjqueryのタブを投げています動作しません。

アドバイスありがとうございます。

編集:すべての括弧を並べ替えるようになったので、チェックボックスがオンになっているかどうかにかかわらず選択ボックスを必須フィールドにしています。つまり、依存部分が機能していません。ページ上の他のjavascriptは現在正常に動作しています。

+0

あなたはどのようなプラグインを使用していますか? – dotty

+0

申し訳ありません、jquery.validate.min.jsを使用しています –

答えて

27

とするためには何もしています。入力フィールドに変更する

、あなたはちょうどそのように動作することができるはず入力

+0

こんにちは、ありがとうございますが、チェックボックスをオンにしているかどうかにかかわらず、まだドロップダウンが必要です。 –

+0

私はコードを編集しました。それを確認してください。 ** else false条件を追加しました –

+0

それはトリックでした - 偉大な、ありがとう。 –

0

私はあなたが使用しているプラ​​グインのか分からないが、あなたのチェックボックスがチェックされている場合

return $("#myCheckbox:checked") 

はjQueryオブジェクトを返します。

return $("#myCheckbox").is(':checked') 

これは真または偽を返します。

多分これはこれは魅力

inputname: 
{ 
    required: function(){ 
     if($("select[name=inputname]").val() == 1){ 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

のようにあなたがあなたの好まにinputnameを編集することができます動作します。この

$(document).ready(function(){ 
    $("#myForm").validate({ 
    rules: { 
       myDropDown:{ 
        required: function (element) { 
        if($("#myCheckbox").is(':checked')){ 
         var e = document.getElementById("myDropDown"); 
         return e.options[e.selectedIndex].value=="" ;        
        } 
        else 
        { 
         return false; 
        } 
        } 
       } 
      } 
    }); 
}); 
+0

コードは2番目の「ルール」の例に基づいています:http://docs.jquery.com/Plugins/Validation/validate#toptions –

+0

ありがとうあなたが提案する行は、チェックボックスがチェックされているときに選択を行わないようにします。 –

8

のようにしてみてください、あなたの問題

+1

これは 'required:function(){return $(" select [name = inputname] ")に圧縮することができます。 } ' – quickshiftin

+0

または、むしろ'必須:function(){return $( "#elementID")。val()=== 1; } ' –

+1

文書(http://jqueryvalidation.org/category/methods/#example:-makes-details-required-only-if-#other-is-checked)によると、適切な方法は' rules:{ myDropDown:必須:{"#myCheckbox:checked"}} ' – gillytech

28

に選択部分を変更することができます。

rules : { 
myDropDown:{required:"#myCheckbox:checked"} 
} 
+1

これは正常に動作し、ドキュメントごとの標準的なメソッドです:http://jqueryvalidation.org/category/methods/#example:-makes-details-required- #他人がチェックされている場合は – gillytech

+0

これは最も簡単な答えですので、より良い方法です。 – JGilmartin

+0

それは動作し、それは最高の方法です... – WalkerNuss

関連する問題