これに対する一般的な解決策を探しています。
同じ名前の2つの無線タイプ入力があるとします。送信されると、チェックされるものがフォームで送信される値を決定します。
<input type="radio" name="myRadios" onchange="handleChange1();" value="1" />
<input type="radio" name="myRadios" onchange="handleChange2();" value="2" />
ラジオボタンの選択が解除されている場合、変更イベントは発生しません。したがって、value = "1"のラジオがすでに選択されていて、ユーザーが2番目を選択した場合、handleChange1()は実行されません。これは、(とにかく私にとって)この選択解除をキャッチできるイベントがないという問題を提起します。
私が欲しいのは、チェックボックスグループ値のonchangeイベント、またはラジオがチェックされているときだけでなくチェックされていないときも検出するoncheckイベントの回避策です。
あなた方の何人かは以前にこの問題に遭遇したと思います。いくつかの回避策はありますか(理想的にはこれを処理する正しい方法は何ですか)?変更イベントをキャッチし、以前にチェックしたラジオと新しくチェックしたラジオにアクセスしたいだけです。
PS
onclickは、ラジオがチェックされたときを示すための(クロスブラウザーの)より良いイベントのように見えますが、チェックされていない問題を解決しません。
このような場合、チェックボックスタイプのonchangeが機能する理由は、チェックしたりチェックを外したりするときに送信される値を変更するため、理にかなっていると思います。ラジオボタンがSELECT要素のonchangeのように動作することを望みますが、何ができますか...
myRadios
変数prev
を読み取るために、name属性を持つ各ラジオボタンにクリックイベントハンドラーが設定されています。各クリックハンドラー内で比較が行われ、クリックされたラジオが保存されているラジオと同じかどうかが判断されprev
、そうでない場合、現在クリックされているラジオがそこに保存されます。:クリックハンドラ内では、以前に選択へのアクセス持っているprev
と、現在選択されているラジオを:this