- ベストアンサー
チェックボックスとラジオボタンの値取得について
- チェックボックスの中にラジオボタンがある場合に、チェックボックスの値に続けてラジオボタンの値を表示したい。
- labelタグを付けたまま値を取得することは可能でしょうか?
- 何かよい方法があれば教えて頂けないでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> parent()で戻って radioボタンを探すみたいな感じで一度試してみます。 それでも可能ではありますが、あまり良い処理とは思えません。 HTML にちょっとした修正を加えるだけで、その都度スクリプトに修正が必要となるからです。 たとえば、ラジオボタンを<label>で囲むとか、スタイルの為に<span>を挿入するとか。 というわけで HTML 構造から見直しては如何でしょうか? <!-- チェックボックス毎に<li>で囲む(終了タグは省略可能です) --> <ul> <li> <label><input type="checkbox" name="q1" value="その1"> その1</label> <li> <label><input type="checkbox" name="q1" value="その2"> その2</label> <span class=男><label><input type="radio" name="radio1" value="可">男性</label></span> <span class=女><label><input type="radio" name="radio1" value="否">女性</label></span> <li> <label><input type="checkbox" name="q1" value="その3"> その3</label> </ul> // チェックボックを囲む <li> の内部に、 // 選択済みラジオボタンを含むなら、値を読み取る var s = vals[i].value; var r = $(vals[i]).closest('li').find('input[type=radio]:checked'); if (r.length > 0) s += ' ' + r.val(); str += s + '\n';
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
>labelの位置は 文字をクリックしたときにチェックボックスも・・・・点線で囲まれていてほしい、と言われたのでその位置にしてあるそうです。 どうしてもということであれば、とめませんが・・・ 某世界で一番普及しているクズなブラウザだと、1クリックでチェックは入れられても もうワンクリックしてもチェックが外れなかったりしてUI最悪ですがよろしいですね?
お礼
すいません、わたくしも過去にlabelの位置を直したのですが、却下されまして>< >>某世界で一番普及しているクズなブラウザだと、1クリックでチェックは入れられても もうワンクリックしてもチェックが外れなかったりしてUI最悪 知りませんでした!次回同じような要望があれば、使い勝手悪くなりますよと説明してみます。 ご回答ありがとうございました。
- yambejp
- ベストアンサー率51% (3827/7415)
>labelタグを付けたまま値を取得することは可能でしょうか? そもそもlabelの付け方が変ですよね ターゲットになる(forで指定する)オブジェクトを囲まないほうがよいでしょう 数字だけで命名したidも仕様としておかしい それと document.f.log.value=str; とあるけど、別のところでforms[・・・].elements[・・・]と書いているので それに合わせたほうがよいでしょう。 で、今回の例でlabel付きでアクセスするには、最低でも parentNodeにもどって処理しないと構造的にはおかしいでしょうね
お礼
回答ありがとうございます! labelの位置は 文字をクリックしたときにチェックボックスも・・・・点線で囲まれていてほしい、と言われたのでその位置にしてあるそうです。 idはわたくしの横着です申し訳ありません。(本当のソースはキチンと命名されてます>< >>parentNodeにもどって処理しないと構造的にはおかしいでしょうね 。 単純に隣の隣の値という感じでは取得はできないんですね>< parent()で戻って radioボタンを探すみたいな感じで一度試してみます。 ありがとうございました!
お礼
ご回答ありがとうございます! 記述いただいたものを使い出来ました!! closest 使うんですね!! // チェックボックを囲む <li> の内部に、 // 選択済みラジオボタンを含むなら、値を読み取る 他の箇所にも使えそうです! ありがとうございました。