Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] solo numeros

Estas en el tema de solo numeros en el foro de Javascript en Foros del Web. buenas tardes tengo un problemita y no se si me pueden ayudar tengo una función que solo debe permitir números sin embargo cuando coloco letras ...
  #1 (permalink)  
Antiguo 05/11/2015, 12:15
Avatar de jcamacho  
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 1
solo numeros

buenas tardes tengo un problemita y no se si me pueden ayudar tengo una función que solo debe permitir números sin embargo cuando coloco letras acentuadas me salta y no lo hace no entiendo que le falta que no controla estos casos.

function numeros(e)

{

key=(document.all) ? e.keyCode : e.which;
if ((key < 48 || key > 57 ))
{
if (key==8 || key==0)
{
return true
}
else
alert("Solo se pueden ingresar numeros");
return false;
}
}
  #2 (permalink)  
Antiguo 05/11/2015, 12:34
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: solo numeros

La condición debería ser:

Código Javascript:
Ver original
  1. if (key > 48 && key < 57 )

Última edición por PHPeros; 05/11/2015 a las 14:37
  #3 (permalink)  
Antiguo 05/11/2015, 12:46
Avatar de jcamacho  
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: solo numeros

sigue aceptando cosas acentuadas: éŕý234ǵśáćǘú es mas si cambio el de abajo por: if (key==8 && key==0) sigue igual; pero si cambio el que tu dijistes pasa de todo!!!!!
  #4 (permalink)  
Antiguo 05/11/2015, 13:17
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: solo numeros

Con que el código se encuentre en el rango de los códigos correspondientes a los números, es suficiente.

Código Javascript:
Ver original
  1. if (!(e.keyCode > 47 && e.keyCode < 58)){
  2.     e.preventDefault();
  3. }

Que también podría ser así:

Código Javascript:
Ver original
  1. if (e.keyCode > 47 && e.keyCode < 58){
  2.     return true;
  3. }
  4. e.preventDefault();

Con el método .preventDefault(), cancelas el evento.

Un saludo
__________________
«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
  #5 (permalink)  
Antiguo 05/11/2015, 14:18
Avatar de jcamacho  
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: solo numeros

la función quedo asi:

function numeros(e)
{
key=(document.all) ? e.keyCode : e.which;
alert('prueba'+key);
if ((key > 47 && key < 58)){
return true;
}else{
if (key==8 || key==0)
{
return true
}else{
alert("Solo se pueden ingresar numeros");
return false;}
}
}



pero igual sigue sin pararle a las palabras acentuadas no entiendo le hago un alert al key y a las palabras acentuadas no le para le coloco la tecla que se encuentra a la derecha de la "P" y una vocal o otra letra y las escribre
  #6 (permalink)  
Antiguo 05/11/2015, 14:41
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: solo numeros

OMG

Con lo que dijo Alexis debería funcionar.

¿Estás usando el evento keypress?
  #7 (permalink)  
Antiguo 06/11/2015, 05:56
Avatar de jcamacho  
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: solo numeros

sip

onKeypress="javascript:return numeros(event);"

lo tengo tal cual no se si pudieran copiar y pegar para probar en un html rapido para que vean a que me refiero


<input type="text" name="c_valor" size="15" autocomplete=off onKeypress="javascript:return numeros(event);" maxlength=18>


  #8 (permalink)  
Antiguo 06/11/2015, 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: solo numeros

Cuando usas JavaScript en línea (código JavaScript insertado en el archivo HTML) en HTML, a excepción del atributo href de un enlace, ya no es necesario el "javascript:". Por otro lado, no veo necesario el retorno de algún valor desde la función si tan solo vas a cancelar el evento.

¿Cómo debería ser?

Como consejo, ten cada código separado. El código HTML, en un archivo HTML. El código CSS, en un archivo CSS y el código JavaScript, en un archivo JS. Si eres de los que incluye al bloque de código JS (que también es trabajar con JS en línea) o al archivo externo JS en la cabecera del documento, debes de ejecutar tu script luego de haber cargado el DOM, es decir, los elementos del documento HTML (mas no el contenido multimedia que pudiera haber). Esto ocurre cuando se produce el evento DOMContentLoaded. Para registrar un evento, utiliza el método .addEventListener().

Código Javascript:
Ver original
  1. document.addEventListener("DOMContentLoaded", function(){
  2.     //Instrucciones
  3. }, false);

Si incluyes al archivo JS al final del documento (después de todos los elementos y antes de la etiqueta </body>), lo anterior no será necesario.

En la función anónima que se ejecutará luego de haber cargado el DOM, irá el conjunto de instrucciones a ejecutar. Empezamos por tomar a la caja de texto, para lo cual debemos de utilizar un método selector, por ejemplo, el método .querySelector().

Código Javascript:
Ver original
  1. var input = document.querySelector("[name=c_valor]");

De esta manera, tomo al elemento del documento cuyo nombre sea "c_valor".

Una vez tomado el elemento, registro en él al evento keypress y, de la misma forma que sucedió con la carga del DOM, ejecutaremos una función anónima.

Código Javascript:
Ver original
  1. input.addEventListener("keypress", function(e){
  2.     //Instrucciones
  3. }, false);

El primer argumento que recibe toda función asociada a un evento, siempre será el objeto del evento, el cual debe de ser especificado siempre al principio de la lista de argumentos que se le pasan a la función. Puede estar representado por cualquier letra o palabra no reservada por el lenguaje.

Por último, las instrucciones que deberás de ejecutar en la función anónima asociada al evento que se registró en la caja de texto, son las que te expliqué en mi anterior comentario. Solo tienes que añadirlas.

Un saludo
__________________
«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
  #9 (permalink)  
Antiguo 06/11/2015, 12:30
Avatar de jcamacho  
Fecha de Ingreso: marzo-2008
Mensajes: 72
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: solo numeros

gracias por tus comentarios me parecen muy interesantes, es verdad el javascript no hace falta, con respecto a lo otro, las funciones las tengo arriba o abajo e igual me da lo mismo, y pues deberían estar en un archivo tal cual como lo comentas, lo que pasa es que muchas veces por resolver rápido uno no lo hace.. con respecto a lo del tema principal resolví filtrando la información acentuada con las expresiones regulares... en el método onkeyup fue lo único que medio hace lo que quiero que haga.... gracias a todos por sus contestas siempre es bueno intercambiar ideas....

Etiquetas: numeros
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 14:08.