Foros del Web » Programando para Internet » Javascript »

Deshabilitar pegado especial con teclas con JS

Estas en el tema de Deshabilitar pegado especial con teclas con JS en el foro de Javascript en Foros del Web. Hola EXPERTOS! mi pregunta es la siguiente (soy nuevo en JS): Tengo un input type text en donde tengo que agregar unas cantidades pero quiero ...
  #1 (permalink)  
Antiguo 25/04/2014, 16:38
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Pregunta Deshabilitar pegado especial con teclas con JS

Hola EXPERTOS! mi pregunta es la siguiente (soy nuevo en JS):

Tengo un input type text en donde tengo que agregar unas cantidades pero quiero deshabilitar el pegado con los event key (Ctrl + V // Shift + Insert) por que ya tengo bloqueado el del ratón.

No he podido encontrar algun ejemplo para guiarme de ahí y no he programado muchas cosas en JS o casi nada y me gustaría saber si me pueden ayudar.

Muchas gracias.
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #2 (permalink)  
Antiguo 25/04/2014, 17:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Deshabilitar pegado especial con teclas con JS

Utiliza el evento onpaste y evita el pegado del contenido con el método preventDefault.



Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 25/04/2014, 17:13
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Deshabilitar pegado especial con teclas con JS

Creo que me acabas de hacer el día amigo... Llevo todo el día buscando una solución y no me sale nada

MUCHAS GRACIAS!!!!!!
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #4 (permalink)  
Antiguo 25/04/2014, 17:15
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Deshabilitar pegado especial con teclas con JS

Una pregunta, esto funciona en todos los navegadores? Y deja le doy una leída al método preventdefault y al evento que marcas.
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #5 (permalink)  
Antiguo 25/04/2014, 17:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Deshabilitar pegado especial con teclas con JS

Técnicamente, esto funciona en todos los navegadores modernos y en algunas viejas versiones, sin embargo, si quieres que funcione incluso en versiones de IE inferiores a la 9 que es en donde IE se empieza a poner decente, hazlo así:

Código Javascript:
Ver original
  1. input.onpaste = function(){
  2.     return false;
  3. };

Lo he probado en Chrome, Opera, Firefox, Safari y en IE 8. En todos va bien.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 25/04/2014, 17:36
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Deshabilitar pegado especial con teclas con JS

Y si quisieras que esto surta efecto en todos los elementos del documento en los que se les puede pegar contenido, aplica esta función:

Código Javascript:
Ver original
  1. Array.prototype.forEach.call(document.getElementsByTagName("*"), function(elemento){
  2.     elemento.addEventListener("paste", function(e){
  3.         e.preventDefault();
  4.     }, false);
  5. });

De este modo, no se podrá pegar contenido alguno en ningún elemento del documento.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 26/04/2014, 07:42
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Deshabilitar pegado especial con teclas con JS

Gracias por tu aporte Alexis88, voy a probar las opciones que me han dado para ver cual se adapta mejor a mi código.

Cualquier duda lo posteo y espero me puedas seguir guiando en este asunto tan complicado de JS!
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #8 (permalink)  
Antiguo 26/04/2014, 08:34
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Deshabilitar pegado especial con teclas con JS

mmmmm sigo teniendo problemas por que si me deja pegar... estoy utilizando varios scripts pero algunos son para deshabilitar el botón del ratón o para validar sólo números al momento de escribir

Código Javascript:
Ver original
  1. <!--Deshabilitar tecla enter para envio de formulario erroneo
  2.     Se agrega el onkeydown="return intro(event) a cada input"-->
  3. <script language="javascript">
  4. function intro(e)
  5. {
  6.     tecla = (document.all) ? e.keyCode : e.which;
  7.     if (tecla==13)
  8.     {
  9.         return false;
  10.     }
  11. }
  12. </script>

Código Javascript:
Ver original
  1. <!--Script para validar campo solo numerico-->
  2. <script language="javascript">
  3. function soloLetras(e) {
  4.     key = e.keyCode || e.which;
  5.     tecla = String.fromCharCode(key).toLowerCase();
  6.     letras = "0123456789";
  7.     especiales = [8, 17, 18, 19, 37, 39, 45, 46, ];
  8.  
  9.     tecla_especial = false
  10.     for(var i in especiales) {
  11.         if(key == especiales[i]) {
  12.             tecla_especial = true;
  13.             break;
  14.         }
  15.     }
  16.  
  17.     if(letras.indexOf(tecla) == -1 && !tecla_especial)
  18.         return false;
  19. }
  20.  
  21. function limpia() {
  22.     var val = document.getElementById("cantidad").value;
  23.     var tam = val.length;
  24.     for(i = 0; i < tam; i++) {
  25.         if(!isNaN(val[i]))
  26.             document.getElementById("cantidad").value = '';
  27.     }
  28. }
  29. </script>

Código Javascript:
Ver original
  1. <!--Deshabilitar boton derecho de rat�n-->
  2.  
  3. <script language="javascript">
  4. document.oncontextmenu = function()
  5. {
  6.     return false
  7. }
  8. </script>
  9.  
  10. <body>
  11. <script language="javascript">
  12. var input = document.getElementsByTagName("input")[0];
  13.  
  14. input.addEventListener("paste", function(e){
  15.     e.preventDefault();
  16. }, false);
  17. </script>
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #9 (permalink)  
Antiguo 26/04/2014, 08:35
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Deshabilitar pegado especial con teclas con JS

Ah y este es mi input en donde necesito que no haga el pegado

Código HTML:
Ver original
  1. <td><input type="text" onkeypress="return soloLetras(event)"  id="cantidad" name="cantidad" size="3" maxlength="3" autofocus/></td>
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #10 (permalink)  
Antiguo 26/04/2014, 09:12
 
Fecha de Ingreso: abril-2014
Mensajes: 32
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Deshabilitar pegado especial con teclas con JS

Pues yo no pude encontrar una forma efectiva de realizar eso y que funcione correctamente en todos los navegadores, así que termine haciendo lo de validad el contenido del input, no solo al momento de escribir, sino también cuando voy a enviar los datos, así si alguien pega una letra en un campo donde solo deberían ir números, pues le marco el error y cancelo el envió de la información.
  #11 (permalink)  
Antiguo 26/04/2014, 09:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Deshabilitar pegado especial con teclas con JS

Probablemente no estés tomando correctamente al <input>, por eso no surte efecto la función. En lugar de tomarlo por el nombre del elemento, hazlo por su id.

Código Javascript:
Ver original
  1. var input = document.getElementById("cantidad");
  2.  
  3. input.addEventListener("paste", function(e){
  4.     e.preventDefault();
  5. }, false);

Asegúrate de que el código JavaScript esté justo antes de la etiqueta </body> para que surta efecto.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #12 (permalink)  
Antiguo 26/04/2014, 10:21
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Deshabilitar pegado especial con teclas con JS

Si las genero sobre el <head> pero además me faltó comentar que me sale un error de guardado del UTF-8 aunque ya agregué las etiquetas

Código HTML:
Ver original
  1. <meta charset="utf-8" charset="iso-8859-1" content="" http-equiv="content-type">
  2. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Ya sólo falta el arrastre de las letras y pegarlas en el texto (que no lo haga) y lo de las teclas Shift + Insert

Una vez más, gracias por el apoyo y la ayuda en este tema (Soy malo para JS!)
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!
  #13 (permalink)  
Antiguo 26/04/2014, 10:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Deshabilitar pegado especial con teclas con JS

¿No te bastó con la cancelación del evento paste que te mostré al inicio? A mi me sirvió, pues no permite pegar contenido por ningún medio.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #14 (permalink)  
Antiguo 26/04/2014, 10:34
Avatar de Landa11  
Fecha de Ingreso: febrero-2014
Ubicación: En algún lugar de mi oficina
Mensajes: 148
Antigüedad: 10 años, 2 meses
Puntos: 1
Respuesta: Deshabilitar pegado especial con teclas con JS

Ah jejeje es que aún no lo he implementado completo pero si se puede pues quiero bloquear todos los posibles PASTE que se puedan hacer
__________________
Ayudando a la gente con nuestros códigos para poder tener el conocimiento adecuado y ser libres!

Etiquetas: deshabilitar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:43.