━目次━ [閉じる]
Web開発をし始めた人達は、
「なんでラジオボタンはreadonlyないねん!!」
って誰もが最初は思ったことでしょう。
業務でもよく使うので、disabledにしてhiddenに値設定してsubmit、、、とかやってましたが、
めんどくさいし、分かり辛い!!
ということでラジオボタンを分かり易くreadonlyっぽく動かすコードを共有します。
ラジオボタンをreadonlyっぽくするには
どうするかと言うと、
チェックが入っている項目以外をdisabledにする
ことで解決します。
HTMLだけで言うと、以下のようにします。
1 2 3 |
<input type="radio" id="radioA" name="radioA" value="1" disabled="disabled" /><label for="radioA" >A</label><br> <input type="radio" id="radioB" name="radioB" value="2" /><label for="radioA" >B</label><br> <input type="radio" id="radioC" name="radioC" value="3" disabled="disabled" /><label for="radioA" >C</label> |
こうすることでsubmitしても選択しているラジオのvalue値は送信されますし、他のラジオを選択することもできないのでテキストボックスで言うところのreadonlyと同じ動きになります。

実際にJavaと絡めて実務で使うことを想定したコーディングは↓を見てね
Javaと連携して実務で使えるようにするには
実際にはDBの値によってラジオボタンの選択やdisabledの場所も動的に変わると思います。
それを想定したソースが以下になります。
【HTML/JSP】
1 2 3 |
<input type="radio" id="radioA" name="radioA" value="1" ${testForm.radioAchecked} ${testForm.radioAdisabled} /><label for="radioA" >A</label><br> <input type="radio" id="radioB" name="radioB" value="2" ${testForm.radioBchecked} ${testForm.radioBdisabled} /><label for="radioA" >B</label><br> <input type="radio" id="radioC" name="radioC" value="3" ${testForm.radioCchecked} ${testForm.radioCdisabled} /><label for="radioA" >C</label> |
【Java】
フォーム(testForm)に各ラジオボタン項目ごとの「チェック状態」「活性・非活性状態」を定義します。
そしてそれを各ラジオボタンに設定しておけば、あとはJava側で適切な値を設定してやればその通りに動きます。
Java側ではチェック状態を判別するファンクションと活性・非活性状態を判別するファンクションを用意して、フォームに値を詰める部分で呼び出します。
チェック状態を判別するファンクションでは各項目(A,B,C)と、そのDB値を渡すことで「checked」か空文字を返します。
活性・非活性状態を判別するファンクションでは、上記で設定したチェック状態を渡すことで、「チェック状態なら活性」「未チェック状態なら非活性」と判別して「disabled」か空文字を返すだけです。

あとは項目数や判断ロジックに合わせて変えるだけじゃな!
さいごに
コツさえ掴めば意外と簡単です^^
他にも実現方法はあると思うので自分に合ったやり方を見つけてみてください。
それでは!また!!
人気の記事だけ集めたので是非覗いていってください^^
厳選!目的別にオススメ記事を紹介-あなたの欲しい情報がここに-