当以编程方式更改文本区域时,如何防止输入事件触发

3

我有一个可以被用户编辑的textarea。有时,我通过更改元素的 value 属性来编程更新文本。我需要一个事件在用户更改文本时触发,但当程序更改它时不触发。这可能吗?

2个回答

1
使用 keyup 作为事件触发器,这将允许用户活动触发函数,但如果您以编程方式执行,则不会触发。
addEvent(document.getElementById('textArea_id'), 'keyup', function(event) {
//function goes here
});

谢谢。我想补充一下,ondragend 是必要的,以便捕获拖动文本所做的更改。 - nonphoto

0
你可以将 'input' 事件绑定到文本框上。这样每当输入发生变化时,都会触发该事件,因此无论是粘贴(即使使用右键),删除还是输入任何内容都会触发。
$('.bind').on('input', function() {
    // do something
});

如果你使用改变事件处理器,这将只在用户取消选定输入框后触发。
这里有一个例子:https://jsfiddle.net/nanilab/qxv4n824/

抱歉 @arglab - 但是 OP 的问题中没有标记 jQuery。 如果有,我会建议使用 jQ 版本的答案:)) - gavgrif
@gavgrif 是的,我没有读标签。不过这仍然是一个好答案,不是吗? :) - agustin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接