Как отключить вставку (Ctrl + V) с помощью jQuery? - PullRequest
66 голосов
/ 01 апреля 2011

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

Ответы [ 11 ]

167 голосов
/ 01 апреля 2011

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

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

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

21 голосов
/ 01 апреля 2011

Редактировать: Прошло почти 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.

9 голосов
/ 18 апреля 2014

Начиная с JQuery 1.7, вы можете использовать метод on вместо

$(function(){
    $(document).on("cut copy paste","#txtInput",function(e) {
        e.preventDefault();
    });
});
4 голосов
/ 03 августа 2014

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

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

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

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

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

4 голосов
/ 06 февраля 2012
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;
});
2 голосов
/ 10 ноября 2015

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

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

Полный учебник и рабочая демонстрация можно найти здесь - Отключить вырезание, копирование и вставку, используя jQuery

1 голос
/ 02 ноября 2018

 $(document).ready(function(){
   $('#txtInput').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" id="txtInput" />
0 голосов
/ 28 марта 2018

$(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" />
0 голосов
/ 27 декабря 2017

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

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

    e.preventDefault();
});
0 голосов
/ 28 января 2015
$(document).ready(function(){
  $('#txtInput').live("cut copy paste",function(e) {
    e.preventDefault();
  });
});

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

...