javascript - inspeccionar - Cómo deshabilitar Pegar(Ctrl+V) con jQuery?
deshabilitar menu contextual javascript (10)
A partir de JQuery 1.7, es posible que desee utilizar el método on
$(function(){
$(document).on("cut copy paste","#txtInput",function(e) {
e.preventDefault();
});
});
¿Cómo puedo desactivar la opción Pegar ( Ctrl + V ) usando jQuery en uno de mis campos de texto de entrada?
Editar: Son casi 6 años después, mirándolo ahora, no recomendaría esta solución. La respuesta aceptada es definitivamente mucho mejor. ¡Ve con eso!
Esto parece funcionar
Puede escuchar eventos de teclado con jQuery y evitar que el evento se complete si es la combinación de teclas que está buscando. Nota, compruebe 118 y 86 ( V y v )
Ejemplo de trabajo aquí: 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();
}
});
});
Actualización: la pulsación de tecla no se activa en IE, use la tecla de configuración en su lugar.
El siguiente código desactivará cortar, copiar y pegar desde la página completa.
$(document).ready(function () {
$(''body'').bind(''cut copy paste'', function (e) {
e.preventDefault();
});
});
El tutorial completo y la demostración operativa se pueden encontrar desde aquí - Deshabilitar cortar, copiar y pegar usando jQuery
Esto ahora funciona para IE FF Chrome correctamente ... No he probado otros navegadores aunque
$(document).ready(function(){
$(''#txtInput'').on("cut copy paste",function(e) {
e.preventDefault();
});
});
Editar: como se señala por webeno , .bind()
está en desuso, por lo tanto, se recomienda utilizar .on()
lugar.
He probado el problema en el navegador Chrome y funciona para mí. A continuación, se muestra una solución para evitar el código de pegado en su cuadro de texto y también para evitar el clic derecho.
$(".element-container").find(''input[type="text"]'').live("contextmenu paste", function (e) {
e.preventDefault();
});
Intenté esto en mi proyecto Angular y funcionó bien sin jQuery.
<input type=''text'' ng-paste=''preventPaste($event)''>
Y en la parte del script:
$scope.preventPaste = function(e){
e.preventDefault();
return false;
};
En proyectos no angulares, use ''onPaste'' en lugar de ''ng-paste'' y ''event'' instesd de ''$ event''.
Puedes ver el evento clave:
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();
}
No probado, pero podría ayudar.
Fuente de comentcamarche y Zakaria
$(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" />
$(document).ready(function(){
$(''#txtInput'').live("cut copy paste",function(e) {
e.preventDefault();
});
});
En el evento textbox live, se evita el evento de cortar, copiar y pegar, y funciona bien.
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;
});