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

时间:2011-04-01 07:02:55

标签: javascript jquery copy-paste textinput

如何在我的输入文本字段中使用jQuery禁用粘贴( Ctrl + V )选项?

11 个答案:

答案 0 :(得分:166)

这适用于IE FF Chrome正常...我还没有测试过其他浏览器

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

修改:正如webeno所指出的,.bind()已被弃用,因此建议改为使用.on()

答案 1 :(得分:21)

编辑:差不多6年后,现在看这个我不推荐这个解决方案。接受的答案肯定要好得多。去吧!


这似乎有效。

您可以使用jQuery监听keyboard events,并阻止事件完成,如果它是您正在寻找的关键组合。 注意,检查118和86( V v

这里的工作示例: 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。

答案 2 :(得分:9)

从JQuery 1.7开始,您可能希望使用on方法

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

答案 3 :(得分:4)

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;
});

答案 4 :(得分:4)

我在Angular项目中尝试了这个,没有jQuery就可以正常工作。

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

在剧本部分:

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

在非角度项目中,使用&#39; onPaste&#39;而不是&#39; ng-paste&#39;和&#39;事件&#39;不知道&#39; $ event&#39;。

答案 5 :(得分:2)

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

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

可以在此处找到完整的教程和工作演示 - Disable cut, copy and paste using jQuery

答案 6 :(得分:1)

QName QNAME_INITIATOR = QName.createQName(NamespaceService.DEFAULT_URI, "initiator");
 $(document).ready(function(){
   $('#txtInput').on("cut copy paste",function(e) {
      e.preventDefault();
   });
});

答案 7 :(得分:0)

您可以捕捉关键事件:

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();
}

未经测试但可以提供帮助。

来自comentcamarche和Zakaria

的来源

答案 8 :(得分:0)

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

在文本框中,实时活动剪切,复制,粘贴事件被阻止,并且效果很好。

答案 9 :(得分:0)

我已经在Chrome浏览器上测试了这个问题,它对我有用。下面是一个解决方案,可以防止文本框中的粘贴代码,也可以防止右键单击。

   $(".element-container").find('input[type="text"]').live("contextmenu paste", function (e) {

    e.preventDefault();
});

答案 10 :(得分:-1)

&#13;
&#13;
$(document).ready(function(){
   $('input').on("cut copy paste",function(e) {
      e.preventDefault();
   });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" />
&#13;
&#13;
&#13;