一回も披露したことのない豆知識

こんにちは、いつもお世話になっております。
JSPで作っているのですが、ラジオボタンなのでHTMLの方でおたずねします。

for文で動的なラジオボタンをつくり、出来た列の先頭をあらかじめ選択済にしておきたいのですが、一番最後が選択済になってしまいます。
選択済みにしたい場合はしたい場所に< checked> を記述すればいいのは分かるのですが、
<input type="radio" value="i" checked> (※i=変数)
のような動的な場合はどこに設定すればよいのでしょうか?
「checked="top"」みたいな書き方が出来ればいいのですが…

ご存知の方がいらっしゃったらご教授ください。

A 回答 (3件)

JSP(Java)の構文はよく分からないのでヒントだけ。


まず、checked属性がついていない場合の動作はクライアント(ブラウザ)
依存です。
一番最初か一番最後が選択された状態になったり何も選択されない
状態になったりします。
これはHTMLとしては文法違反となります。
一方で、今回はすべての type="radio" に対してchecked属性を
つけてしまったようですね。
ループを使用している場合、フラグ変数をたてたりして指定の部分だけ
checked属性をつけるようにするといいです。

PerlCGIではよく以下のようにします。

for(my $i = 0; $i < 10; $i++) {
# ループの最初だけ ' checked' をつける
my $checked = ' checked' if($i == 0);
# フォームを表示する
print "<input type=\"radio\" name=\"radio_$i\" value=\"$i\"$checked>\n";
}

Javaでも応用すれば同様のことはできると思います。
    • good
    • 0

JSPの事はわからないので的外れかも知れませんが…



「一番最後が選択済になって」しまうのは、「for文で動的なラジオボタンをつくり、出来た列」の<input type="radio"~>の全てにchecked属性が入っている為だと思います。ラジオボタンは「単一選択」ですから、同一の選択肢(name)の中ではchecked属性は常に1つのみにしかつけられません(つまり「「checked="top"」みたいな書き方」というのは存在しません)。もしそれに反してchecked属性が同一name中の全ての選択肢に入ってしまっていたら、より後の選択肢に上書きされて行く事になり、結局一番最後のものが「選択済み」状態で表示されてしまいます。
なので、
<input type="radio" name="hoge_01" id="hoge_01_1" value="1" checked>
<input type="radio" name="hoge_01" id="hoge_01_2" value="2">
(以下同様)
という様にしたいのであれば、checked属性の記述部分も変数にして、動的に書き出されるグループの常に一番最初のみその属性を表示し、残りの選択肢には表示しない…という様な設定ができればよいと思うのですが、その様にはできませんか?
    • good
    • 0
この回答へのお礼

解説ありがとうございます。
なぜそうなってしまうのか良くわかりました!!
でもよくある一覧表示などではたいてい一番先頭が選択済みになってるのでできるはずですよね。

check属性の部分も変数にするというのは考えたのですがうまくいきませんでした。
>動的に書き出されるグループの常に一番最初のみその属性を表示し、残りの選択肢には表示しない…という様な設定
これがどんなものになるのか…まだ検討してみます。

お礼日時:2008/09/03 21:48

for文の前にchecked付きのタグを記述してから、for文内はchecked無しで記述。



例(簡略で記述してます)
<input type・・・・checked>
for ・・・・・・
<input type・・・・>
end
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ラジオボタンの<input type= ~~>をfor文の前と後とでわけるということですか?
for文の前に出すと、ラジオボタンが動的に出来なくなってしまいます…

お礼日時:2008/09/03 21:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報