2012-01-04 5 views
1

私はラジオボタンを含むテーブルを持っています。私はユーザーがtablerowsをクリックできるようにして、tablerows内のラジオボタンをクリックします。次に、チェックされたラジオボタンの値を取得し、サーバーに送信して更新を取得します。イベントハンドラを開始する前にクリックアクションを実行します

ラジオボタンを直接クリックすると、ちょうどダンディーになり、マークされたラジオボタンの値が正しいです。

ラジオボタンで.click();を使用すると、実際のクリックイベントが発生する前にイベントハンドラが起動しているように見え、$("input:radio:checked").val()を使用すると前の値が返されます。

私はラジオボタンのクリックハンドラでタイムアウトを100ミリ秒に設定することでこれを "解決"しましたが、間違っているようです。

これを処理する前に実際にクリックする方法はありますか?

ありがとうございました。

答えて

3

クリックイベントをどのようにバインドしていますか?

さらに、.change()イベントが必要です。これは、値が変更された後にのみ発生する可能性があります。

$("input:radio").change(function() { 
    alert($(this).is(':checked')); 
}); 
+0

'alert(this.checked)'で十分です。この値を取得するためにjquery-fyする必要はありません。 –

+0

ありがとうございました。 –

+0

私は気づいたばかりです:別のラジオボタンに変更すると、2つの変更イベントが発生します:そのイベントのチェックを外し、もう一方をチェックします。あなたのコードの周りに「if($(this))」(「:checked」))ブロックを置くだけで、常に1回だけ実行されます。 – Flater

1

click()の代わりにイベント.change()を使用してください。例:

$("input:radio:checked").change(function() { 
    if ($(this).is(':checked')) { 
     console.log('Checked ' + $(this).val().toString()); 
    } 
}); 
+0

これは、現在チェックされているラジオボタンにのみイベントをバインドします。 – Flater

+0

また、 'if(this.checked)...'で十分です。このチェックをjqueryfyする必要はありません。 –

関連する問題