3

入力が有効または無効のときにメソッドを実行したい。jQueryでできますか?

これと似たようなことをしたい ( non-working code below):-

$('input').on('enabled', function(e){
   alert( 'Just now someone enabled : ' + $(this).attr('id') );
   executeSomeHandlerForENABLED();
}).on('disabled', function(e){
   alert( 'Just now someone disabled : ' + $(this).attr('id') );
   executeSomeHandlerForDISABLED();
});
4

2 に答える 2

2

はいあります!最新のブラウザーの場合、これを行う適切な方法はMutationObserversを使用することです。残念ながら、IE10 でさえ MutationObservers をサポートしていません。IE8 と 9 は気にしないでください。有効/無効にする要素のセッター。

このテクニックに関するいくつかの優れた記事を次に示します。

残念ながら、セッター内の無効なイベントでネイティブの fireEvent を使用することはできません。これは、無効な状態に従うためです。したがって、外部イベント トリガー システムが必要です。幸いなことに、jQuery の優秀な人々はすでにそれを行っています。

その知識をもとに、fireOnDisable jQuery プラグインを作成しました。それを使用するには、セレクターに適用するだけです。

$('#disabled_thing').fireOnDisable();

プロパティ変更イベントをネイティブにサポートしていないブラウザーを使用している場合、このプラグインは何もしません。IE8-10専用です。IE7以下の場合、セッター/ゲッター関数を公開していないため、あなたはうんざりしています.

于 2013-10-31T15:57:29.700 に答える
1

はい。しかし、あなたがしようとしていることは簡単なことではありません。

あなたができることは、propertychangeイベント(ちなみにIEでは利用できません)を使用して、プロパティの変更をキャッチすることです。

私はグーグルで検索し、このソリューションが実装されていることを発見しました。プロパティの変化を監視するプラグイン。IEの場合、フォールバックするsetTimeout()のは非常に悲しいことです。

とにかく、そのソリューションを利用したソリューションは次のようになります。

$("input").watch('disabled', function() {
    console.log($(this).is(":disabled"));
});
于 2013-03-08T10:28:01.353 に答える