如何删除textarea中的文本,使其在本机编辑历史记录中输入?

时间:2013-01-01 20:52:41

标签: javascript textarea

我有一种迷你应用程序,除其他外,手动修改输入文本区域。简单地设置值(以及可选地恢复光标/滚动位置)有一个很大的缺点:它会扰乱编辑历史记录。所以我使用这个函数进行所有修改:

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

我的项目支持不佳,该功能非常适合插入文本和替换文本(选择要替换的文本,然后调用type)。但是当它被一个空字符串调用时,它什么都不做。

对于某些删除,我可以解决这个问题,方法是选择我要删除的文本和额外的文本,重新输入额外的位,然后适当地移动光标。但如果我们删除textarea中的所有内容,那是不可能的。

那么有人知道一种变通方法,或者其他一些方法来修改textarea的值而不会弄乱编辑历史记录吗?

1 个答案:

答案 0 :(得分:1)

传递\0而不是传入空字符串。这似乎有效here。或者你可以像这样检测一个空字符串:

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