2017-09-12 19 views
0

2つのラジオボタンがあります。しかし、ラジオボタンは画像として表示されています。私の質問は画像の選択(ラジオボタン)にあり、他の画像を非表示にしたいと思います。ですから、私が考えたのは、チェックしたクラスを追加し、チェックしない別のクラスを追加することです。チェックされていないクラスのベースは、私はそれらを非表示にすることができます。ラジオボタンでJCleryでaddClassとremoveClassを選択

私の問題は、サイズのラジオボタンと理由のラジオボタンが2セットあるため、それらを区別してほしいからです。サイズを選択すると、ラジオボタンが表示されなくなることはありません。

私はそれらを別々に区別してターゲットにすることができます。

私はこのコード行を追加した場合:

$('label:has(input:radio:checked)').addClass('activeReason'); 

は、それは私が望んでいないすべてのラジオボタンに適用されますが。ここで

は私のラジオボタンです:サイズ

<form id="sign-condition"> 

      <label> 
      <input type="radio" name="sign-condition" class="sign-condition" value="new_sign" /> 
      <img src="../../css/icons/new-signs.png"> 
      </label> 

      <label> 
      <input type="radio" name="sign-condition" class="sign-condition" value="old_sign"/> 
      <img src="../../css/icons/old-signs.png"> 
      </label> 
    </form> 

ここでは私のラジオボタンです:理由

<div class="col-md-6"> 

       <form id="sign-reason"> 

        <label> 
        <input type="radio" name="sign-reason" value="damaged" /> 
        <img src="../../css/buttons/damaged.png"> 
        </label> 

        <label> 
        <input type="radio" name="sign-reason" value="odd-size"/> 
        <img src="../../css/buttons/odd-size.png"> 
        </label> 

        <label> 
        <input type="radio" name="sign-reason" value="not-correct-standard"/> 
        <img src="../../css/buttons/not-correct-standard.png"> 
        </label> 
    </form 

ここで私はそれぞれ異なるセットをターゲットにしようとしたjQueryのです。

<script> 
     $(document).ready(function(){ 

     $('input:radio').click(function() { 
      $('label>.sign-condition:has(input:radio:checked)').addClass('activeCondition'); 
      $('label>.sign-condition:has(input:radio:checked)').removeClass('disable'); 
      $('label>.sign-condition:has(input:radio:not(:checked))').removeClass('activeCondition'); 
      $('label>.sign-condition:has(input:radio:not(:checked))').addClass('disable'); 

     }); 



     }); 
     </script> 

どのように各ラジオボタンの設定を異なる方法で行うことができますか。あなたが知っている最良の方法を使用して配列を横断し、(ネイティブjavascriptやjQueryの)名前でラジオボタンを取得し、それが配列になります、その後、現在クリックされたラジオボタンの名前と値を取得し、あなたに

+0

おそらく最も簡単なあなたは( '.parents()')最初のフォーム要素まで移動し、それを使用している場合その要素の下のラベルだけを 'find'するか、_context_として渡します。 – CBroe

+0

同じラジオボタンまたは他のラジオボタンでアクションを実行しますか?あなたのコードで私はあなたが同じラジオでのみ操作を実行しているのを見ることができます – Rupal

+0

私はユーザーがしたいと思うものは、サイズと理由を選択することです。彼がサイズを選択すると、他のサイズのオプションが消え、理由を選択すると、他の理由が消えるはずです。 –

答えて

0

私はあなたが必要なもの、この場合はわからない:

$(document).ready(function(){ 
 
    $('input:checkbox').change(function() { 
 
     /*get the parent node of the radio and then hide only its siblings*/ 
 
     $(this).parent('label').siblings().toggle(); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<form id="sign-condition"> 
 

 
      <label> 
 
      <input type="checkbox" name="sign-condition" class="sign-condition" value="new_sign" /> 
 
      <img src="../../css/icons/new-signs.png"> 
 
      </label> 
 

 
      <label> 
 
      <input type="checkbox" name="sign-condition" class="sign-condition" value="old_sign"/> 
 
      <img src="../../css/icons/old-signs.png"> 
 
      </label> 
 
    </form> 
 
    
 
     <form id="sign-reason"> 
 

 
        <label> 
 
        <input type="checkbox" name="sign-reason" value="damaged" /> 
 
        <img src="../../css/buttons/damaged.png"> 
 
        </label> 
 

 
        <label> 
 
        <input type="checkbox" name="sign-reason" value="odd-size"/> 
 
        <img src="../../css/buttons/odd-size.png"> 
 
        </label> 
 

 
        <label> 
 
        <input type="checkbox" name="sign-reason" value="not-correct-standard"/> 
 
        <img src="../../css/buttons/not-correct-standard.png"> 
 
        </label> 
 
    </form>

+0

これは素晴らしい@Amaniです。どうもありがとうございます。ちょうど最後の質問です。ラジオボタンをクリックするとその兄弟は非表示になります。トグル()を追加したい場合、クリックすると兄弟を隠し、もう一度クリックすると再びオプションが表示されます。トグル()を働かせますか? –

+0

'$(this).parent( 'label')。siblings()。toggle();'私はそれを試みましたが、うまくいきませんでした。 –

+0

あなたはラジオではなくチェックボックスを使用する必要があります –

-1

ありがとうございました値が現在クリックされているラジオボタンと等しくないラジオボタンを非表示にします。

希望します。

0

下記のJSコードを試してください。それを一時的なコードに置き換えてください。

<script> 
    $(document).ready(function(){ 
     $(#sign-condition input:radio).click(function() { 
      $('label>.sign-condition:has(input:radio:not(:checked))').removeClass('activeCondition').addClass('disable'); 
      $(this).removeClass('disable').addClass('activeCondition'); 
     }); 
    }); 
</script> 
+0

あなたの最後のコメント返信を見ました。理由と条件のためにもう一度別の識別子が必要です。あなたのフォーム名にすることができますので、ラジオクリックイベントのフォーム名の前に付加してください – Rupal

0

getElementsByNameは、ラジオボタンの名前で配列を返す必要があります。その結果、あなたのロジックを使用してチェックボタンにクラスを追加します。

関連する問題