2017-02-25 3 views
0

ラジオボタンでフォームを作成しています。ユーザーが何かを変更するたびに更新関数が呼び出されます。ユーザーフレンドリーなラジオボタンクリック検出

しかし私はこれをユーザーフレンドリーなラジオボタンと組み合わせて問題を抱えています。ここでは、テキストとボタンの周りのボタンゾーンをクリックしやすくしたいと思っています。

ゾーン、テキスト、ボタンの両方のクリックを同時に検出するのに問題があります。 - これまでのところ、MouseEvent.targetid(私はすべての要素に与えなければならない)のリストを比較するだけで管理しましたが、これは私の頭の中で間違っています。

<div class="buttonZone"> 
    <input type="radio" id="choice1" /> 
    <label for="choice1">Choice 1</label> 
</div> 
<div class="buttonZone"> 
    <input type="radio" id="choice2" /> 
    <label for="choice2">Choice 2</label> 
</div> 

アイデアは非常に高く評価されます。

+0

現在の構造では、ボトムまたはテキストの両方でチェックが行われます。しかし、入力に名前を付ける必要もあるので、ブラウザはどちらかを選択することを知っています。 – Ibu

答えて

2

labelタグに入力テキストとラベルテキストをラップすることができます(これは、for属性を使用して別々の要素にリンクされているからです)、領域全体が入力をトリガーします。

.buttonZone { 
 
    background: #eee; 
 
    border: 1px solid #aaa; 
 
    padding: 2em; 
 
    display: inline-block; 
 
}
<label class="buttonZone"> 
 
    <input type="radio" id="choice1" /> 
 
    <span>Choice 1</span> 
 
</label> 
 
<label class="buttonZone"> 
 
    <input type="radio" id="choice2" /> 
 
    <span>Choice 2</span> 
 
</label>

+0

私はそれを認識しています。しかし、JavaScriptでマウスターゲットを取得すると、入力とスパンの要素を別々の要素として扱い、更新機能を起動しないため、これは機能していないようです。 - そして、私はそれを回避する方法がわかりません。 –

+0

@Tc_より具体的にする必要があります。私にはうまく見えるhttp://codepen.io/anon/pen/jBEyJy –

+0

私はそれを見ることができます。今私はちょっと私が間違っていたことを知ることに興味を持っています。 - でも、ありがとう! –

0

あなたがボタンに値を与えてみましたがありますか?

<div class="buttonZone"> 
    <input type="radio" id="choice1" value="Choice 1" /> 
</div> 
<div class="buttonZone"> 
    <input type="radio" id="choice2" value="Choice 2" /> 
</div> 
関連する問題