如何使用jQuery禁用粘贴(Ctrl + V)?

如何禁用粘贴( Ctrl + V )选项使用jQuery在我的input文本字段之一?

这现在适用于IE浏览器的Chrome浏览器正常…我还没有testing其他浏览器

$(document).ready(function(){ $('#txtInput').bind("cut copy paste",function(e) { e.preventDefault(); }); }); 

编辑:这是近6年后,现在看这个我不会推荐这个解决scheme。 接受的答案肯定好多了。 去吧!


这似乎工作。

您可以使用jQuery监听键盘事件 ,并防止事件完成,如果您正在寻找关键组合。 请注意,请检查118和86( Vv

工作示例: http : //jsfiddle.net/dannylane/9pRsx/4/

 $(document).ready(function(){ $(document).keydown(function(event) { if (event.ctrlKey==true && (event.which == '118' || event.which == '86')) { alert('thou. shalt. not. PASTE!'); event.preventDefault(); } }); }); 

更新:按键不会在IE中触发,而是使用keydown。

从JQuery 1.7开始,你可能需要使用on方法

 $(function(){ $(document).on("cut copy paste","#txtInput",function(e) { e.preventDefault(); }); }); 
 jQuery('input.disablePaste').keydown(function(event) { var forbiddenKeys = new Array('c', 'x', 'v'); var keyCode = (event.keyCode) ? event.keyCode : event.which; var isCtrl; isCtrl = event.ctrlKey if (isCtrl) { for (i = 0; i < forbiddenKeys.length; i++) { if (forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) { return false; } } } return true; }); 

我在我的Angular项目中试过,没有jQuery就可以正常工作。

 <input type='text' ng-paste='preventPaste($event)'> 

而在脚本部分:

 $scope.preventPaste = function(e){ e.preventDefault(); return false; }; 

在非angular度项目中,使用'onPaste'而不是'$ event'的'ng-paste'和'event'。

以下代码将禁用从整页中剪切,复制和粘贴。

 $(document).ready(function () { $('body').bind('cut copy paste', function (e) { e.preventDefault(); }); }); 

完整的教程和工作演示可以从这里find – 禁用使用jQuery剪切,复制和粘贴

您可以捕捉关键事件:

 function checkEventObj ( _event_ ){ // --- IE explorer if ( window.event ) return window.event; // --- Netscape and other explorers else return _event_; } document.keydown = function(_event) { var e = checkEventObject(_event); if( e.ctrlKey && (e.keyCode == 86) ) window.clipboardData.clearData(); } 

没有testing,但可以帮助。

来自comentcamarche和Zakaria

 $(document).ready(function(){ $('#txtInput').live("cut copy paste",function(e) { e.preventDefault(); }); }); 

在文本框现场活动剪切,复制,粘贴事件被阻止,它运作良好。