2016-09-24 20 views
0

このスクリプトでは、ほとんどの場合、(ラジオボタンがチェックされているかどうか調べています)そのうちの1つがチェックされている場合は、アラートが1つだけ必要です。div内のラジオボタンの1つがチェックされているかどうかを確認してください

背景情報: これがチェックされていると、次のdivが表示されます。そうでない場合、divは表示されません。私のシステムの上では、チェックされたラジオボタンをクリックするとチェックが外され、表示されたdivは非表示になります。

マイコード:ここで

<div class="divtop"> 
    <input type="radio" name="r1" value="v1" /> 
    <input type="radio" name="r1" value="v2" /> 
    <input type="radio" name="r1" value="v3" /> 
<div> 

はスクリプトです:

$('.divtop input:radio').live('click', function(event) { 
    var div = $("div.divtop"); 
    var radiobuttons = div.find("input[type='radio']"); 
for (var i = 0; i < radiobuttons.length; i++) { 
    if (radiobuttons[i].type === 'radio' && radiobuttons[i].checked) { 
    alert ('on') // action 
    } else { 
    alert ('off') // action 
}} }); 

どのように私は、ラジオボタンのいずれかがチェックされている場合にのみ1つのアラートを取得するには、このスクリプトを適応させることができますか?

ラジオボタンのグループごとに異なる状況で適用されるため、この関数は汎用(ラジオボタン名の使用なし)でなければなりません。あなたのポストにあなたのコメントに応えて

+2

これはチェックする奇妙なことです。ラジオボタンのクリックイベントに関数をバインドしています。クリックすると選択されたグループにラジオボタンを1つだけ持つことができるので、何がポイントですか?言い換えれば、*が*ラジオボタンをクリックしていない場合、そのラジオボタンが選択されていることを意味しますか? – j08691

+0

@ j08691 - よく始めるにはすべてチェックを外すことができますが、少なくとも1つは最初にチェックし、それ以降はすべてのチェックを外すことはできません本当だろう? – adeneo

+0

@adeneo - 古いリセットボタンを使用しない限り誰でもまだそれを使用していますか? – j08691

答えて

1

あなたがチェックすることができますラジオ、別の部門を表示します。

$(document).ready(function(){ 
 
    $('.divtop > input:radio').change(function(){ 
 
     if($(this).is(":checked")) 
 
     { 
 
     $('.divMiddle').removeClass('hide'); 
 
     } 
 
    }); 
 
});
.hide 
 
{ 
 
    display: none; 
 
} 
 
.show 
 
{ 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="divtop"> 
 
    <input type="radio" name="r1" value="v1" />ONE 
 
    <input type="radio" name="r1" value="v2" />TWO 
 
    <input type="radio" name="r1" value="v3" />THREE 
 
<div> 
 
<div class="divMiddle hide"> 
 
    <input type="radio" name="r11" value="v11" /> ONE 
 
    <input type="radio" name="r11" value="v22" /> TWO 
 
    <input type="radio" name="r11" value="v33" /> THREE 
 
</div>

+0

パーフェクト!ありがとう@loading ...ラジオボタンがuncheck状態に戻された場合、divMiddleを再び非表示にする方法はありますか? – Sergelie

+0

@ user3371049私はデフォルトでdivMiddle divにクラスを非表示にしています。非表示にするには、そのクラスを追加するだけです。それ以外は削除する必要があります。 –

+0

完璧なソリューション!ありがとう@ローディング... – Sergelie

0

、それは私に発生したあなたは唯一のいくつかの簡単なCSSで欲しいものを達成できる:最初のdivがチェックしている場合

[type="radio"], [type="radio"]:checked + .inner{ 
 
    display:block; 
 
} 
 

 
.inner{ 
 
    display:none 
 
}
<div class="divtop"> 
 
    <input checked type="radio" name="r1" value="v1" /> 
 
    <div class="inner">ONE</div> 
 
    <input type="radio" name="r1" value="v2" /> 
 
    <div class="inner">TWO</div> 
 
    <input type="radio" name="r1" value="v3" /> 
 
    <div class="inner">THREE</div> 
 
<div>

+0

それはスマートに聞こえる、私はそれを試してみましょう! – Sergelie

+0

@andrewはうまく動作しますが、設定が異なります。 3つのボタンを含むdivの後にクラスinnerを持つdivは1つだけです。このdivは、ボタンの1つがチェックされている場合にのみ表示されます。 – Sergelie

+0

それはユーザーのように見えますLoading ...あなたのための解決策を持っているかもしれません:) – andrew

関連する問題