2009-07-17 14 views
10

私はPHP/jqueryを使用してクイズアプリケーションを作成しています。回答の選択肢は次のようになります。DIVをクリックするとラジオボタンが表示されます

これらの回答は、1行に1つの回答でコンテナに表示されます。各回答には、コンテナ内に独自のボックスがあります。私は、ユーザーが個々の回答divのどこかをクリックし、ラジオの選択をチェックさせることができるようにしたい。

jqueryを使用してラジオボタンのコンテナdivをクリックしたときに、ラジオボタンのチェックを有効にするにはどうすればよいですか?

+1

関連質問http://stackoverflow.com/questions/972366/jquery-focus-function-not-working-in-firefox/ –

答えて

25

jQueryを使用する代わりに、<label>要素を使用するネイティブHTMLでこれを行うことができます。 Here is a sampleの動作中です。

<ul id="answers"> 
     <li> 
       <label> 
        <input type='radio' name='answer_id' value='313'> True 
       </label> 
     </li> 
     <li> 
       <label> 
        <input type='radio' name='answer_id' value='314'> False 
       </label> 
     </li> 
</ul> 
+0

perrrrfect。ありがとうございました。 – Ian

0

は多分のようなもの:ラベル・タグの

$('#answers li div').click(function(){ 

    var r = $(this).find('input[type=radio]'); 
    if($(r).is(":checked")) 
    { 
    $(r).attr("checked", ""); 
    } 
    else 
    { 
    $(r).attr("checked", "checked"); 
    } 

}); 
2

正しい使用法は次のとおりです。=用

<input type="checkbox" id="checkme" name="checkme" /> <label for="checkme">Toggle this checkbox on/off</label> 

"..." 常に入力のIDを参照します。

1

私はtj111に同意するが、必ずしも合わない場合:スタイルへ

  • もっと難しいです。
  • そこにそれらのテキスト(おかげでマイケル)

がここにあるdiv要素とjQueryを使用して代替コードであれば、ラベルにのみ動作:

$('input:radio').click(ev){ 
    ev.stopPropagation(); 
}).parent().click(function(ev){ 
    ev.preventDefault(); 
    $(this).children('input').click(); 
    $(this).addClass('active').siblings().removeClass('active'); 
}); 

今、あなたも隠すことができ、「アクティブ」クラスでスタイルシートを使用して強調表示します。

+0

それは...面白いです。どのように:$( 'input:radio')。((ev){ev.preventDefault(); $(this)。 children( 'input')。クリック();}); –

+0

ラベルは、クリックするためのテキスト(または大量の空白)があったときにのみ機能することがわかりました。逆に、クリックを親に置くと、実際のラジオクリック自体が壊れてしまいます。私の問題を解決したromaninshのコードを修復する –

+1

ありがとう、私はあなたの調査結果を反映するために私の答えを更新しました。 – romaninsh

関連する問題