使用jquery在浏览器中检测上下文菜单粘贴

6

我正在尝试通过右键粘贴内容到文本域中来检查文本的长度,但似乎找不到如何实现。

1个回答

17
$('textarea').bind('paste', function() {
    var that = this;
    setTimeout(function() {
        var length = that.value.length;
        alert(length);    
    }, 0);

});

在线演示: http://jsfiddle.net/4UrE3/1/

支持 Firefox 3.6、Chrome、Safari和IE9 beta浏览器。 不支持Opera浏览器。


8
因为(在浏览器中)粘贴的文本只有在粘贴处理程序完成后才会出现在文本框中。在粘贴处理程序内部,文本框仍然为空。请参见此处:http://jsfiddle.net/4UrE3/3/ setTimeout(function() { ... }, 0); 将在粘贴处理程序返回并填充文本框后立即执行该函数,因此,安全地读取 this.value 属性。 - Šime Vidas
@Sime:所以,这就是为什么之前.bind('paste')无法工作的原因,谢谢! - gen_Eric
这个Fiddler可以在Firefox、IE11和Chrome上使用! :) - Zeek2
@ŠimeVidas,但“paste”事件并不仅限于上下文菜单。当用户按下Ctrl+V或Cmd+V时,它也会被触发。我在想是否有一种方法可以区分这两个操作(键盘粘贴和上下文菜单粘贴)。 - mvvijesh
当输入或粘贴时,执行函数... - WiiLF
显示剩余2条评论

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