Javascript 使用鼠标右键单击并粘贴引发事件

Javascript 使用鼠标右键单击并粘贴引发事件,javascript,jquery,Javascript,Jquery,我想在文本区域内粘贴一些文本后立即在文本区域中触发事件。当使用Shift+Ins时,我可以做到这一点;但是,如果选择鼠标右键然后粘贴(从下拉菜单中),则无法执行此操作。在Shift+In后,Keyup启动。在鼠标右键单击后选择“粘贴”时,其余的都不会激发。。。我该怎么办 <textarea name="message" id="message"></textarea> $("#message").on('keyup contextmenu', function(eve

我想在文本区域内粘贴一些文本后立即在文本区域中触发事件。当使用Shift+Ins时,我可以做到这一点;但是,如果选择鼠标右键然后粘贴(从下拉菜单中),则无法执行此操作。在Shift+In后,Keyup启动。在鼠标右键单击后选择“粘贴”时,其余的都不会激发。。。我该怎么办

<textarea name="message"  id="message"></textarea>

$("#message").on('keyup contextmenu', function(event) { 
     alert("ok");
 });

$(“#消息”)。在('keyup contextmenu',函数(事件){
警报(“正常”);
});


谢谢

大多数浏览器都支持
输入
事件,当粘贴或以其他方式添加内容时会触发该事件,无论:

$("#message").on('keyup contextmenu input', function(event) { 
  alert("ok");
});

请注意,使用
input
是最常用的方法,当控件获得输入时不管如何触发,因此如果您钩住多个事件(如上所述),您将得到对同一输入的多个调用。例如,如果在支持
input
的浏览器上同时挂接
keyup
input
,您将收到两个调用。类似地,当用户粘贴时,
粘贴
输入
,在支持这两种功能的浏览器上

如果您需要支持既没有
输入
也没有
粘贴
的浏览器,恐怕不幸的答案是您需要轮询。不过,每隔(比如)250毫秒进行一次轮询并不是要求浏览器做那么多工作,您可以检测是否有必要:

var message = $("#message");
var events = null;
var previous;
if ('oninput' in message[0]) {
    // Browser supports input event
    events = "input";
} else if ('onpaste' in message[0]) {
    // Browser supports paste event
    events = "paste keyup contextmenu";
}
if (!events) {
    // Ugh, poll and fire our own
    events = "pseudoinput";
    previous = message.val();
    setInterval(function() {
        var current = message.val();
        if (current != previous) {
            previous = current;
            message.trigger(events);
        }
    }, 250);
}
console.log("Using: " + events);
message.on(events, function(e) { 
  console.log("Got event: " + e.type);
});

如果要检测textarea、input:text、input:password或input:search元素的内容何时更改,则on input非常有用,因为这些元素上的onchange事件在元素失去焦点时触发,而不是在修改后立即触发。从版本9开始,Internet Explorer支持oninput事件

 $("#message").on('input propertychange', function() {
       console.log($(this).val());
    });

您可以使用专用的
粘贴事件:

$("#message").on('paste', function(event) { 
     alert("ok");
 });

但是您可能需要检查—我不认为jQuery规范化了这个事件


如果您需要IE支持,这可能会有点困难,但这取决于您的需求-是否绝对需要粘贴操作?如果没有,TJ Crowder的答案是正确的。

您应该使用
input
事件回调。参见演示

仅供参考,
输入
在本例中是一个事件,而不是一个选择器,或者您可以为答案添加一些解释吗?