2010-12-16 13 views
0

私は、入力隠しタグの値を変更する関数を持っています。私はこの入力( "change"イベント)を聞くリスナーを登録しました。しかし、入力の値がプログラムで(ユーザーの介入ではなく)変更されているので、ハンドラーは決して実行されません。しかし、私はその入力の値が変わるたびにハンドラを実行する必要があります。これを達成するための回避策はありますか?イベントの質問

+0

Hm..whatとして、このための場所でいくつかの配管がありますか? – sje397

答えて

0

element.onchange();

+0

私が指摘したように、onchange()は機能しません。入力タグにtype = "hidden"を削除して、手動で入力フィールドに値を入力した場合にのみ、ハンドラが呼び出されます。そうでなければ、プログラムで値を変更すると、ハンドラは決して呼び出されません。 –

+0

申し訳ありませんが、私の投稿が不明な場合。つまり、 'theElement.onchange();'を実行することでハンドラを手動で呼び出す必要があります。しかし、最初に 'this = theElement;')を変更する必要があります。 –

0

あなたは、単に実行して、JavaScriptで変更イベントを呼び出すことができます。

document.getElementById('id').onchange()

あなたはjQueryのを使用している場合、それはあなたが探しているもの$(element).change()

1

だ、ですa Mutation Event。ブラウザでのサポートはひどく欠けていますが、今サポートマトリックスを見つけることさえできません。 のみを使用している場合は、this oneのようなプラグインを試すこともできますが、$ .attr関数を呼び出すと動作します。

もう一つの選択肢は、custom eventsをjQueryで使用することですが、これは値を変更するときにハンドラを直接呼び出すよりも簡単です。

これが役に立ちます。

0

属性の変更を監視するための一貫性のあるブラウザ間の方法はありません。 maksymkoはあなたが探しているのは突然変異の出来事ですが、彼が述べたように、彼らは広く支持されていません。

入力値に変更が必要な場合にコードで使用されるAPI /メソッドを設定することが最も確実です。これは不完全で未来が壊れていますが、それだけではありません。

多くの図書館では、値を変更すると、直接あなたのハンドラを呼び出すことについて、このようなjQueryのか由井3