2017-02-21 9 views
0

私はすでにチェックされたラジオをクリックしたのか、彼が新しい選択をしたのかを知る必要があります。 「フォーカス」、「クリック」、「変更」のイベントの組み合わせ(「フォーカス」に古い値を保存し、「クリック」または「変更」の現在の値と比較して、クリックして、 )。"クリック"または "変更"イベントハンドラで以前のラジオ値を取得する方法はありますか?

私はここで初期状態を得ることができなかったので、私はクリックハンドラに以前の状態を保存できません。 「フォーカス+クリック」または「ロード+(前の)クリック+クリック」。

は、しかし、それは私のためにハックのように見える、と私はちょうど1つのイベントハンドラを使用して、この使用して組み込みのjqueryの機能、を行うには、よりストレートな方法があることを前提としています。 ありますか?

ありがとうございます!

+1

あなたが言及しているように、シングルイベントハンドラを使用する必要がある場合は、mousedownだけを使用してみませんか?以前の値であることが「チェックされている」かどうかを確認します。ラジオの場合、新しい値も「チェック」されます。チェックボックスの場合、新しい値は古い値と反対になります。 –

答えて

1

mousedownを@Bukent Vuralが示唆しています。

変更前の現在の値を$('input[name=test]:checked').val();, とします。ここで、「test」はラジオ入力の名前です。

これを見てくださいJSFiddle

EDIT

あなたはラベルが同様にクリックを検出したい場合は、2番目のイベントハンドラを追加する必要があります

$('label').click(function() { 
     labelID = $(this).attr('for'); 
     $('#'+labelID).trigger('mousedown'); 
}); 

更新JSFiddleを確認してください。

+0

良いアイデアだが、残念なことにラベルが使用されていると動作しないので、ラベルのクリックを別々にキャプチャする必要があります。いずれにしても、このアイデアは非常に便利です。 – AlexandrX

関連する問題