6

とりわけ、入力テキストエリアを手動で変更する一種のミニアプリがあります。単純に値を設定する (およびオプションでカーソル/スクロール位置を復元する) には、1 つの大きな欠点があります。それは、編集履歴を混乱させることです。したがって、すべての変更にこの関数を使用します。

function type(el, str) {
    var e = document.createEvent('TextEvent');
    e.initTextEvent('textInput', true, true, null, str);
    el.dispatchEvent(e);
}

私のプロジェクトでは不十分なサポートは問題ありません。この関数は、テキストの挿入と置換に最適です (置換するテキストを選択してから を呼び出しますtype)。しかし、空の文字列で呼び出されると、何もしません。

一部の削除では、削除するテキストと追加のテキストの両方を選択し、余分なビットを再入力してから、カーソルを適切に移動することで、これを回避できます。しかし、テキストエリア内のすべてを削除する場合、それは不可能です。

回避策、または編集履歴を台無しにすることなくテキストエリアの値を変更する他の方法を知っている人はいますか?

4

1 に答える 1

1

空の文字列を渡す代わりに、 を渡し\0ます。それはここでうまくいったようです。または、次のように空の文字列を検出することもできます。

function type(el, str) {
    var e = document.createEvent('TextEvent');
    e.initTextEvent('textInput', true, true, null, str || "\0");
    el.dispatchEvent(e);
}
于 2013-01-01T21:05:27.063 に答える