JSPでラジオボタンを選択解除可能にすることは可能ですか(チェックボックスのように)?
ラジオボタンを持つテーブル列のあるページがあります。選択したラジオをクリックすると、ラジオボタンの選択を解除したい。ここにコードがあります
<tr>
<TD><INPUT type="radio" name="Radios" value="someValue"></td>
<TD>someValue</td>
</tr>
前もって感謝します。
JSPでラジオボタンを選択解除可能にすることは可能ですか(チェックボックスのように)?
ラジオボタンを持つテーブル列のあるページがあります。選択したラジオをクリックすると、ラジオボタンの選択を解除したい。ここにコードがあります
<tr>
<TD><INPUT type="radio" name="Radios" value="someValue"></td>
<TD>someValue</td>
</tr>
前もって感謝します。
問題は、onclickハンドラーが実行される前に、クリックの直後にチェックされていないボタンがチェックされることです。したがって、ユーザーがクリックする前にボタンのチェックが外されていたとしても、ハンドラーの開始時にボタンがチェックされます。したがって、以下のコードは機能しません。
function toggle(e)
{
e.checked = !e.checked;
}
したがって、この問題を回避するための秘訣があります。クリックのパリティをカウントするフィールドを追加するだけです。
function toggleRadioButton(e)
{
if(e.parity==undefined)
{
e.parity = false;
}
e.parity = !e.parity;
e.checked = e.parity;
//Fix parity of other buttons of this group which are unchecked automatically
if(e.checked)
{
var buttonsInGroup = document.getElementsByName(e.name);
for(var i=0; i<buttonsInGroup.length; i++)
{
if(buttonsInGroup[i]!=e)
{
buttonsInGroup[i].parity = false;
}
}
}
}
HTML部分には、標準のonclickハンドラーがあります。
<INPUT type="radio" name="Radios" value="someValue" onclick="toggleRadioButton(this)"/>
ただし、プログラムでボタンの状態を変更すると、整合性の問題が発生する場合があります。私はこのコードが本当に嫌いですが、他の解決策は見当たりません。
最後に、私の提案は、この奇妙な方法でラジオボタンを使用しないことです:)。
Javascriptを使用して、マウスクリックイベントに基づいて(ボタンが選択されている)または(空のstinrg =ボタンが選択されていない)checked
として評価される属性を設定/切り替えることができます。ラジオボタンに関するリファレンスドキュメントは次のとおりです。"checked"
""
グループ内で一度に選択できるラジオボタンは1つだけであることに注意してください。
次の JavaScript コードを試してください。
var firstClick = true;
function tick(element){
if(!firstClick){
if(element.checked){
element.checked = false;
firstClick = true;
}
}else{
firstClick = false;
}
}
次に onclick プロパティを追加します
<tr>
<TD><INPUT type="radio" name="Radios" value="someValue" onclick="tick(this);"></td>
<TD>someValue</td>
</tr>
注: これはテストされていません。しかし、これはうまくいくはずです。