Как отключить вставку (Ctrl+V) с помощью jQuery?

Как отключить Paste ( Ctrl+V) опция с использованием jQuery в одном из моих входных текстовых полей?

10 ответов


Теперь это работает для IE FF Chrome правильно... Я не тестировал для других браузеров, хотя

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

Edit: как указано webeno, .bind() устарел, поэтому рекомендуется использовать .on() вместо.


Edit: это почти 6 лет спустя, глядя на это сейчас, я бы не рекомендовал это решение. Принятый ответ определенно намного лучше. Иди с этим!


Это, кажется, работает.

вы можете слушать клавиатуры С jQuery и предотвратить событие от завершения, если его ключ комбо вы ищете. Обратите внимание, Проверьте 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.


начиная с 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;
});

я попробовал это в своем угловом проекте, и он отлично работал без jQuery.

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

и в части скрипт:

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

в угловой проекта, используйте 'onPaste' вместо 'НГ-вставить' и 'событие' instesd из 'праздники'.


следующий код отключит вырезание, копирование и вставку с полной страницы.

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

полный учебник и рабочий демо можно найти здесь -отключить вырезать, копировать и вставлять с помощью 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();
}

не проверено, но может помочь.

источник comentcamarche и Закария


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

на textbox live событие вырезать, копировать, вставить событие предотвращается, и он работает хорошо.


я протестировал проблему в браузере chrome, и она работает для меня.Ниже приведено решение для предотвращения вставки кода в текстовое поле, а также предотвращения щелчка правой кнопкой мыши.

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

    e.preventDefault();
});

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