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

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

Ответ 1

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

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

Ответ 2

Редактировать: Это почти 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();
         }
    });
});

Обновление: keypress не срабатывает в IE, вместо этого используйте keydown.

Ответ 3

Как и в JQuery 1.7, вы можете использовать вместо этого метод on

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

Ответ 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;
});

Ответ 5

Я пробовал это в моем проекте Angular, и он отлично работал без jQuery.

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

И в разделе script:

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

В проекте Angular используйте 'onPaste' вместо 'ng-paste' и 'event' instesd '$ event'.

Ответ 7

Вы можете поймать ключевое событие:

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

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

В текстовом поле вырезано живое событие, копирование, вставка события предотвращается и работает хорошо.