jQuery键盘输入检测和粘贴文本的检测

21

我必须使用jQuery的keyup事件来检测用户是否输入了任何文本,但我的问题是如果用户使用鼠标粘贴文本,它将无法检测到,你能告诉我原因吗?

这是我的源代码:

$("textarea").keyup(function(){
        if($(this).val().length !== 0){
            $('#submit').attr('disabled',false);

它应该可以工作,尽管 $('submit') 是无效的。 - Mr. Alien
1
这篇帖子已经4年了,$("#editor").on('paste', function(e) { $("#editor").on('input', function(e) { 都能正常工作。 - nerkn
2个回答

38

显然,有些情况下jQuery无法用于粘贴。您可能需要绑定多个事件,如下面的参考示例所示,以准确地捕获用户的粘贴内容。

来自Soliciting Fame - jQuery keyup vs bind - (from way-back machine)

// detect the change
$('input#myId').bind("change keyup input",function() { 
    // handle events here
});

更新:在Jquery 3.0中,bind已被弃用,并被on替代

// detect the change
$('input#myId').on("change keyup input",function() { 
    // handle events here
});

链接似乎已过时,即域名已被新的使用者取得。我考虑用互联网档案馆的链接替换它,但不确定是否是最佳选择。我想可以完全删除它(即使原始来源的信用也会丢失)。 - MJV
@MJV 谢谢。我已经用 Wayback Machine 的链接替换了它。 - jwwishart

15

在这种情况下,只需绑定到输入事件即可:

$('textarea').bind("input", function() {});

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