Javascript 为什么jQuery中的粘贴事件在预粘贴时触发?

Javascript 为什么jQuery中的粘贴事件在预粘贴时触发?,javascript,jquery,mouseevent,jquery-events,Javascript,Jquery,Mouseevent,Jquery Events,我正在尝试使textbox与Twitter类似,为此我编写了以下代码: 字数 使用的事件更改、设置关键帧和粘贴 Keyup和Change事件工作正常,但粘贴事件有点奇怪,当我在textarea中粘贴某个内容时,字数在那一刻没有变化,经过一些调试后,我发现在将某个内容粘贴到textbox之前会触发粘贴事件。我不知道他们在推特上是怎么处理的 这是我的代码: 活动: 由于粘贴事件的预粘贴性质,该实例上的工作计数不会更改 我们将非常感谢您的建议和帮助。请参阅此示例 这种行为很奇怪。你会认为这些事件

我正在尝试使textbox与Twitter类似,为此我编写了以下代码:

  • 字数
  • 使用的事件更改、设置关键帧和粘贴
Keyup
Change
事件工作正常,但粘贴事件有点奇怪,当我在textarea中粘贴某个内容时,字数在那一刻没有变化,经过一些调试后,我发现在将某个内容粘贴到textbox之前会触发粘贴事件。我不知道他们在推特上是怎么处理的

这是我的代码:
活动:

由于粘贴事件的预粘贴性质,该实例上的工作计数不会更改

我们将非常感谢您的建议和帮助。

请参阅此示例

这种行为很奇怪。你会认为这些事件中的一个会正确地捕捉到这一点吗?我很惊讶谷歌没有更多的答案。

你现在应该使用on()而不是bind()。
   function update()    
   {
       alert($textbox.val().length);
   }


    var $textbox = $('input');
    $textbox.bind('keyup change cut paste', function(){
        update(); //code to count or do something else
    });
    // And this line is to catch the browser paste event
    $textbox.bind('input paste',function(e){ setTimeout( update, 250); });  
也不需要创建命名函数,只需创建匿名函数即可

$('#pasteElement').on('paste', function() {
    setTimeout(function(){
        alert($('#pasteElement').val());
    }, 100);
});

你可以做一件事,首先得到原始数据。然后可以获取事件粘贴数据并添加它们

  $("#id").on("paste keypress ",function(event){
                // eg. you want to get last lenght
                 var length=$("#id").val().length;
                 if(event.type == "paste"){
                    //then you can get paste event data.=

length+=event.originalEvent.clipboardData.getData('text').length;
                }


            });`

不会完全更改事件句柄these@WebDeveloper不,更改事件不会在粘贴时立即更新计数,我们必须在粘贴内容后从文本框中单击。@WebDeveloper-问题在于鼠标右键或工具栏粘贴。我真的很惊讶,
change
事件没有捕捉到这一点。这段代码是用什么语言编写的?它不是JavaScript(包括jQuery)——除非您删除了一堆大括号等等……在这种情况下,它就不再是JavaScript了。无论如何,如果你得到一个“即将粘贴”事件,你可以添加一个
setTimeout
hack来在几毫秒后更新字数。但一般来说,即使您在测试的任何浏览器上使用它,某些浏览器也根本不允许您处理粘贴事件。@nnnnnn它的backbone.js和coffee脚本。好的,我将尝试设置超时功能。谢谢。更改事件只有在您离开该字段时才会触发(点击或退出)。@mrtsherman-谢谢。我之前尝试过更改事件,是的,粘贴到文本框后,只有当我在框外单击时,计数才会更改,这很奇怪。事实上,当它不工作时,所以在某个地方找到了粘贴事件可以处理这个问题,但结果是一样的。无论如何,我会用Change和Keyup事件再试一次。再次感谢。@WebDeveloper-coffeescript中只有语法更改的区别,其他的没有区别。谢谢。该代码最适合复制粘贴字数限制事件和限制字数限制。
$('#pasteElement').on('paste', function() {
    setTimeout(function(){
        alert($('#pasteElement').val());
    }, 100);
});
  $("#id").on("paste keypress ",function(event){
                // eg. you want to get last lenght
                 var length=$("#id").val().length;
                 if(event.type == "paste"){
                    //then you can get paste event data.=

length+=event.originalEvent.clipboardData.getData('text').length;
                }


            });`