2011-01-13 15 views
2

私はテキスト入力フィールドとチェックボックスを持っています。 テキストを変更して入力ボックスの外側をクリックするか、またはEnterキーまたはTabキーを押すと、変更イベントがスローされます。しかし、テキストを入力してマウスで直接チェックボックスをクリックすると、チェックボックスの変更イベントだけがスローされたようです。JavaScriptのテキスト入力の変更イベントが発砲しない

$('.update').change(function(){ 
    console.log($(this)); 
}); 

は、この既知の問題であり、どのように私はすべての変更イベントが発生/スロー/に巻き込まれていることを確認してくださいすることができます

<input type="text" name="text" class="update"> 
<input type="checkbox" name="check" class="update"> 

と、このjQueryの:

私は、次のコードを持っていますこのセットアップ?

+0

そのコードは$(document).ready(function())にありますか。関数?関数にalert()を入れて、関数にヒットしているかどうかを調べることができます。 – codersarepeople

+0

奇妙な。私のテストでは、変更されたテキスト入力からチェックボックスへのクリックが行われるので、何か他のことが起こっているはずですhttp://jsfiddle.net/tbeseda/UCtyb/ – tbeseda

+0

本当ですか? HTML/JSをコピーして、何かをテキストボックスに入力してチェックボックスをクリックすると、両方のイベントが発生するのを見ることができます。 – Chandu

答えて

1

私はそれを得るか分からない。しかし、私がテキストフィールドに入力しようとすると、マウスでチェックボックスをクリックすると、両方のイベントが発生します。しかし、テキスト入力のイベント「変更」は、フィールドがフォーカスされている限り、この入力がフォーカスを失わなければならないことを意味することに留意しなければなりません。これはどういうわけかあなたの場合かもしれません。チェックボックスとラジオボックスは異なる方法で動作します。フォーカスを失う必要はありません。

乾杯。

P.S. 私のテストケース: http://dl.dropbox.com/u/196245/index16.html

1

更新クラスをリッスンしているため、両方の変更イベントが発生します。

1

入力フォーカスが入力イベント使用し、ユーザー変化を発射するために他のコントロールに

0

を切り替えない限り、変更イベントが発生しません:火災に

$('input').on('input',function(){...}) 

は、 コードが変更された場合は、DOMSubtreeModifiedイベントを使用します。

$('input').bind('DOMSubtreeModified',function(){...}) 

あなたは両方ユーザーとコードの変更解雇する場合:

$('input').bind('input DOMSubtreeModified',function(){...}) 

DOMSubtreeModifiedイベントは廃止、時にはかなりのCPU時間がかかるとしてマークされているが、しかし、注意して使用する場合、それはまた、非常に効率的であり...

関連する問題