Foros del Web » Programando para Internet » Javascript »

Validar solo Numeros y no permitir copy paste

Estas en el tema de Validar solo Numeros y no permitir copy paste en el foro de Javascript en Foros del Web. Hola Amigos, como puedo hacer para evitar que hagan un copy paste en una caja de texto, sucede que ya he puesto una restriccion solo ...
  #1 (permalink)  
Antiguo 07/02/2006, 15:58
Avatar de mabarcau  
Fecha de Ingreso: mayo-2005
Mensajes: 317
Antigüedad: 19 años
Puntos: 0
Pregunta Validar solo Numeros y no permitir copy paste

Hola Amigos, como puedo hacer para evitar que hagan un copy paste en una caja de texto, sucede que ya he puesto una restriccion solo numerica en el onkeypress, pero cuando selecciono un texto o cualquier otro caracter, y lo copio se me permite pegarlo en mi caja de texto en donde supuestamente solo deberia ingresarse numeros, como puedo evitar ello?


Miguel

PD: Quisiera hacerlo pero sin la necesidad de bloquear el menu contextual del mouse.
  #2 (permalink)  
Antiguo 07/02/2006, 18:52
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Entonces tu script de restriccion no restricciona
Prueba con este:
Código:
function validarNum(e)
{
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla == 8) return true;
    patron = /\d/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}
Yo acabo de probarlo, y no acepta letras con Ctrl+V.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 07/02/2006, 19:01
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
aparte del onkeypress podrias utilizar ONBLUR para que cuando pierde el foco la caja de texto, también valide que sean solo números (de paso no tenes que bloquear el copy&paste), todo eso con una sola funcion.
__________________
by Capitán Buscapina
.
  #4 (permalink)  
Antiguo 08/02/2006, 10:07
Avatar de mabarcau  
Fecha de Ingreso: mayo-2005
Mensajes: 317
Antigüedad: 19 años
Puntos: 0
Sonrisa

Gracias amigos, con la ayuda de ustedes como no aprender?
  #5 (permalink)  
Antiguo 08/02/2006, 13:47
Avatar de mabarcau  
Fecha de Ingreso: mayo-2005
Mensajes: 317
Antigüedad: 19 años
Puntos: 0
Exclamación

flaviovich, disculpa que te moleste, pero aun soy novato y no logro probar el codigo que me has enviado,. podrias enviarme algun ejemplo basico?
  #6 (permalink)  
Antiguo 08/02/2006, 13:50
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola mabarcau

Te completo el ejemplo de flaviovich
Código:
<html>
<head>
<script type="text/javascript">
function validarNum(e)
{
    tecla = (document.all) ? e.keyCode : e.which;
    if (tecla == 8) return true;
    patron = /\d/;
    te = String.fromCharCode(tecla);
    return patron.test(te);
}
</script>
</head>
<body>
<input type="text" onkeypress = "return validarNum(event)" />
</body>
</html>
Saludos,
  #7 (permalink)  
Antiguo 08/02/2006, 14:22
Avatar de mabarcau  
Fecha de Ingreso: mayo-2005
Mensajes: 317
Antigüedad: 19 años
Puntos: 0
Pregunta

JavierB, lo acabo de pegar tal y como me lo muestras, me permite evitar la escritura de caracteres que no sean numericos, pero igual con el control+v puedo pegar cualquier texto diferente de un numero, lo mismo pasa si le hago pegar con el click derecho del mouse, como puedo evitar eso amigos?
  #8 (permalink)  
Antiguo 08/02/2006, 15:44
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Asi funciona en cualquier browser:
Código HTML:
<input type="text" onKeyDown="return validarNum(event);"> 
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 08/02/2006, 19:11
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
holas a todos, otra variante podría ser:

Cita:
<html>
<head>
<script>
function verif(n){
permitidos=/[^0-9.]/;
if(permitidos.test(n.value)){
alert("Solo se puedeingresar numeros");
n.value="";
n.focus();
}
}

</script></head>
<body>
<form name="form1" method="post" action="">
<input name="nn" type="text" onKeyup="verif(this)" onblur="verif(this)">
<input type="submit" name="Submit" value="Enviar">
</form>
</body>
</html>
en la que ya no esntra en juego el menú contrextual del navegador ni Ctrl+V. Solo quedaría por mejorarle (a mi gusto , claro) que sea un número válido (solo permite ingresar numeros y el . , pero faltaría limitar que solo se ingrese un .)

No se bien como será la implementacion , pero si esto luego lo procesás con lenguaje del lado del servidor (php, asp) deberías validarlo nuevamente (javascript es perfectamente eludible)

saludos
__________________
by Capitán Buscapina
.
  #10 (permalink)  
Antiguo 09/09/2008, 09:07
Avatar de ZeroLino  
Fecha de Ingreso: abril-2007
Mensajes: 91
Antigüedad: 17 años
Puntos: 2
Respuesta: Validar solo Numeros y no permitir copy paste

muxas gracias por la solucion

igual me sirve en cierta parte

ya que el boton derecho aun esta habilitado
  #11 (permalink)  
Antiguo 09/09/2008, 09:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Validar solo Numeros y no permitir copy paste

Puedes cancelar el pegado usando esto:
Código HTML:
<input type="text" onpaste="return false" /> 
Eso me lo enseñó Panino5001 ().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 10/09/2008, 08:38
Avatar de ZeroLino  
Fecha de Ingreso: abril-2007
Mensajes: 91
Antigüedad: 17 años
Puntos: 2
Respuesta: Validar solo Numeros y no permitir copy paste

SIII!!

muchas gracias

esta todo a la perfección

=)
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:36.