Как отключить параметр «Вставить» (Ctrl+V) с помощью jQuery в одном из текстовых полей ввода?
Как отключить вставку (Ctrl+V) с помощью jQuery?
Ответы (9)
Теперь это правильно работает для IE FF Chrome... Хотя я не тестировал другие браузеры
$(document).ready(function(){
$('#txtInput').on("cut copy paste",function(e) {
e.preventDefault();
});
});
Изменить: как указано webeno, .bind()
устарело, поэтому вместо этого рекомендуется использовать .on()
.
cut
, copy
и paste
являются экспериментальными (но я считаю, что они широко поддерживаются)
- person oldboy; 07.11.2020
Изменить: почти 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, вместо этого используйте нажатие клавиши.
Начиная с JQuery 1.7 вы можете вместо этого использовать метод on
$(function(){
$(document).on("cut copy paste","#txtInput",function(e) {
e.preventDefault();
});
});
Я попробовал это в своем проекте Angular, и он отлично работал без jQuery.
<input type='text' ng-paste='preventPaste($event)'>
И в части сценария:
$scope.preventPaste = function(e){
e.preventDefault();
return false;
};
В проекте без углов используйте «onPaste» вместо «ng-paste» и «event» вместо «$ event».
Следующий код отключит вырезание, копирование и вставку с полной страницы.
$(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 и Zakaria.
window.clipboardData.clearData()
работает только в ie. Если вы ловите событие, вы можете просто предотвратить значение по умолчанию и вернуть false. это эффективно отключит вставку, инициируемую клавиатурой. Я бы опубликовал пример, но мне лень, и к тому же вы уже так близко.
- person greggreg; 01.04.2011
$(document).ready(function(){
$('#txtInput').live("cut copy paste",function(e) {
e.preventDefault();
});
});
В текстовом поле живое событие вырезания, копирования, вставки предотвращается, и оно работает хорошо.
$(document).ready(function(){...})
можно было бы переписать в эквивалент $(function(){...})
.
- person dma_k; 10.09.2015
Я протестировал проблему в браузере Chrome, и она у меня работает. Ниже приведено решение для предотвращения вставки кода в текстовое поле, а также для предотвращения щелчка правой кнопкой мыши.
$(".element-container").find('input[type="text"]').live("contextmenu paste", function (e) {
e.preventDefault();
});