テキストをクリックして、対応するラジオボタンを選択します


86

PHPを使用してクイズWebアプリケーションを作成しています。各質問は個別に構成され、ユーザーが自分の回答を選択できるようにするため<label>に使用radio buttonsする4つの可能な選択肢があります。1つの質問の現在のHTMLは次のようになります。

<label for="349">What is my middle name?</label>
<br>
<input id="349" type="radio" value="1" name="349">Abe
<br>
<input id="349" type="radio" value="2" name="349">Andrew
<br>
<input id="349" type="radio" value="3" name="349">Andre
<br>
<input id="349" type="radio" value="4" name="349">Anderson
<br>

ラジオボタンに関連付けられたテキストをクリックするオプションをユーザーに提供しほしい 今のところ、ユーザーはラジオボタン自体をクリックすることしかできません。これは非常に面倒な作業だと思います。

選択テキストクリックして特定のラジオボタンの選択肢を選択できないと読みました。タグの属性forid属性を一致させるための提案があります。私はこれを行いましたが、それでも機能しません。

私の質問は、ラジオボタン自体を選択することしかできないのではなく<input type="radio">オブジェクトのテキストをクリックできるようにしたいということです。 私は以前にこれについて読んだことがあることを知っていますが、私の問題の解決策を見つけることができないようです。どんな助けや提案も大歓迎です!

回答:


176

コードでは、フォーム自体にラベルがあります。以下に示すように、個々の無線グループにラベルを付けます。

<form>
  <p>What is my middle name?</p>
  <br>
  <input id="349" type="radio" value="1" name="question1">
  <label for="349">Abe</label>
  <br>
  <input id="350" type="radio" value="2" name="question1">
  <label for="350">Andrew</label>
  <br>
  <input id="351" type="radio" value="3" name="question1">
  <label for="351">Andre</label>
  <br>
  <input id="352" type="radio" value="4" name="question1">
  <label for="352">Anderson</label>
  <br>
</form>

2つの要素が同じIDを持つことは決してないことに注意してください。このname属性は、ラジオボタンがグループとして機能し、一度に1つの選択のみを許可するように使用されます。


7
非常にシンプル。タグのほとんど隠された機能が再発見されたときにそれを愛してください
foochow 2014

37

ネイサンの答えによると、ラジオボタンとラベルの間に少しクリックできないスペースがあるようです。それらをシームレスに参加させる方法は次のとおりです(この記事を参照)。

<form>
    <p>What is my middle name?</p>
    <br>
    <label><input id="349" type="radio" value="1" name="question1">Abe</label>
    <br>
    <label><input id="350" type="radio" value="2" name="question1">Andrew</label>
    <br>
    <label><input id="351" type="radio" value="3" name="question1">Andre</label>
    <br>
    <label><input id="352" type="radio" value="4" name="question1">Anderson</label>
    <br>
</form>

2
私はこの答えが好きです。しかし、このアプローチでは「for」属性も必要ですか?
Piddu 2017年

@Piddu:あなたが正しいと思うので、答えを更新しました。ありがとう!
user21820 2017年

ラジオボタンとラベルの間の余分なスペースを回避する別のオプションは、単にそこに配置し<input id="349" type="radio" value="1" name="question1"><label for="349"> Abe</label>ないことです(タグ間にスペースや改行はありません)
AryeEidelman18年

1
ChromeとFirefoxでテストしたところ、スペース文字を削除することで、クリックできないスペースが7ピクセルから3ピクセルに減少することがわかりました。見る-が-原因不明-ギャップの間に、これらのインライン-ブロック- DIV要素である理由。残りの3つのピクセルは、ラジオボタンのデフォルトの右マージンですmargin: 3px 3px 0 5px;(デフォルトでホバー効果があるため、Firefoxでより目立ちます)。これは、マージンを削除してパディングに置き換えることでCSSで修正できます。
AryeEidelman18年

1
@AryeDovEidelman:なるほど、調査してくれてありがとう!簡単にするために、ラベルにすべてを含めることに固執します。=)
user21820 2018年

1

ラベルタグは、各回答の周囲、たとえば阿部、アンドリューなどの周囲に配置する必要があり、それぞれに固有である必要があります。


1

ラベルタグ内に入力タグをネストすると、ラベルがラジオボタンのすぐ隣に表示されます。以前に提案されたアプローチでは、ラベルタグをhtmlファイル内の任意の場所に配置でき、クリックすると関連するラジオボタンが選択されます。これをチェックしてください:

<html>
<body>

<form>
  <p>What is my middle name?</p>
  <br>
  <input id="349" type="radio" value="1" name="question1">

  <br>
  <input id="350" type="radio" value="2" name="question1">
  <label for="350">Andrew</label>
  <br>
  <input id="351" type="radio" value="3" name="question1">

  <br>
  <input id="352" type="radio" value="4" name="question1">
  <label for="352">Anderson</label>
  <br>
</form><br/>
<p>This is a paragraph</p>
  <label for="349">Abe</label><br/>
  <label for="351">Andre</label>
  
</body>
</html>

この方法で行うと、代わりにこの欠陥がなくなります。

<form>
  <p>What is my middle name?</p>
  <br>
  
  <label>
    <input id="349" type="radio" value="1" name="question1"/>Abe
  </label>
  <br>
  
  <label>
    <input id="350" type="radio" value="2" name="question1"/>Andrew
  </label>
  <br>
  
  <label>
    <input id="351" type="radio" value="3" name="question1"/>Andre
  </label>
  <br>
  
  <label>
    <input id="352" type="radio" value="4" name="question1"/>Anderson
  </label>
  <br>
</form>


0

あなたはこのようにそれを行うことができます

 <label for="1">hi</label>
 <input type="radio" id="1" />

したがって、テキストまたはラベルをクリックすると、ラジオボタンが選択されます。しかし、これを行うと...

<label for="1">//</label>

これを直前に書いたコードに追加し、2番目のラベルをクリックすると、ラジオも選択されます。


0

私はこれを何年も行っていますが、変数を使用して、これらのどちらも私には機能しません。

    echo "<input type='radio' name='student' id='$studentID' value='$studentID'>
        <label for='$studentID'>$fname</label> $lname<br />\n";
    echo "<input type='radio' name='student' id='$studentID' value='$studentID'>
        <label for='$studentID'>$fname $lname</label><br />\n";

そしてここにソースがあります:

        <input type='radio' name='student' id='986875' value='986875'>
        <label for='986875'>John</label> Brown<br />
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.