9

Google Chrome 開発者ツールなどを使用して変更されたときに、dom のプロパティを取得するために使用されるミューテーション オブザーバーを見てきました。textareaただし、ユーザーの入力または貼り付けによって 内のテキストが変更されたときに関数を呼び出す方法を見つけることができません。私のコードでは、すべての監視オプションが true に設定されていても、ユーザーが入力してもコールバックは呼び出されません。これのコードは何ですか?

4

2 に答える 2

11

ミューテーション オブザーバーは、DOM の変更をリッスンします。ただし、フォーム要素の現在の状態は DOM には反映されません。

たとえば、value 属性を設定せずに input 要素inputを作成します。テキストが入力フィールドに入力されると、input.valueはこのテキストを反映します。一方、input.getAttribute('value')は引き続きnullを返します。

したがって、ミューテーション オブザーバーは、フォーム フィールドのステータスのこの変化を観察できません。

(提案された ECMAScript 第 6 版の Object.observe も役に立ちません。最近のバージョンの Chrome ではホスト オブジェクトの変更をリッスンできますが、上記の入力のようなホスト オブジェクト プロパティの変更は監視されていません。)

于 2013-02-19T13:03:16.260 に答える
0

このリンクTextarea onchange detectionを参照してください。onkeyup と onchange 関数を記述する必要があります。

ちなみに、上記の答えはインプットメソッドでは機能しません。私の解決策はsetInterval、テキストが 50 ミリ秒ごとに変更されたかどうかを検出することです。

于 2012-08-21T05:11:52.613 に答える