0

例として、Firefox でこの JSFiddle を確認してください。

コンソールを開き、フィールドの 1 つに入力します。テキストを切り取る場合は、コンソールで値を確認してください。

console.log(e.explicitOriginalTarget);ご覧のとおり、値と呼ばれるプロパティが含まれており、入力のカット後に新しい正しい値が実際に含まれています。ただし、次の行でconsole.log(e.explicitOriginalTarget.value);プロパティを直接取得しようとすると、切り取り前の入力の値がログに記録されます。

これがどのように起こっているのか分かりませんか?アイデアはありますか?

typeof e.explicitOriginalTarget.value を実行しようとしましたが、期待どおりの「文字列」が返されます。

入力がカットですべてのテキストを削除したかどうかを確認する方法について、誰かが他のアイデアを考えることができれば、私もそれらを受け入れます。私はここでプロトタイプを使用することを余儀なくされており、比較的慣れていないため、組み込みの機能を見落としている可能性があります。

4

1 に答える 1

1

仕様は次のように述べています。

カット イベントは、選択したデータが削除される前に発生します。

したがって、イベントが発生して.valueも、 はまだカット前のものです。console.logイベント/イベント ターゲットを後で調べた場合(それをクリックして ;)、この時点でイベントの処理が長い間完了しているため、コースの変更が行われます。注意: ログに記録しているターゲットは、ライブ DOM ノードです。

setTimeout(..., 0)ばかばかしいほど簡単な回避策として、カット後の値がどのようなものかを確認する必要があります。

または、私の要件が許せば、イベントのinput代わりに作業します...cut

于 2013-09-12T21:06:17.773 に答える