Ver Mensaje Individual
  #13 (permalink)  
Antiguo 03/06/2012, 17:33
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 11 meses
Puntos: 1567
Respuesta: Validar numero con decimales

Cita:
Iniciado por majo_83 Ver Mensaje
Funciona perfecto, solo que use alert para mostrar los mensajes, ya que si lo dejaba con document.getElementById('mensaje').innerHTML al colocar la función en un formulario de varios campos como el que estoy manejando no me muestra nada. El tema es que si o si el usuario usa el tabulador para ir moviendo el cursor dentro del formulario y cuando llega al campo al que le aplico la función muestra el mensaje(alert) antes de escribir nada.
Tengo alguna manera de solucionar esto??
Gracias...
Cita:
Iniciado por majo_83 Ver Mensaje
También pasa que cuando apretó, por ejemplos, la tecla del n°8 ya me pone el alert de que no es un valor permitido y en realidad debería dejarme ingresar por ej. 81,82…
Te tiene que funcionar de las dos maneras, mezclar onkeyup con alerts no te lo recomiendo. Con lo del tabulador, a lo hecho hay que sumar la deteccción de la tecla
probá esto

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>validar número, entero o float</title>
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function validar(campo,e){
  9. var elcampo = document.getElementById(campo);  
  10. e = (e) ? e : ((event) ? event : null);
  11. var version = (e.target) ? e.target : ((e.srcElement)?e.srcElement : null );
  12. var teclaNum = e.keyCode;
  13. if(teclaNum != 9){
  14.    
  15. if((!validarNumero(elcampo.value))||(elcampo.value == "")){
  16. elcampo.value = "";
  17. elcampo.focus();
  18. document.getElementById('mensaje').innerHTML = 'Debe ingresar un número';
  19. }else{
  20. document.getElementById('mensaje').innerHTML = '';
  21.  
  22. // Aqui pones el resto de las condiciones usando comparadores u operadores aritméticos, ya que estás seguro de que trabajas con números
  23. if ((elcampo.value < 80) || (elcampo.value > 190)){
  24. document.getElementById('mensaje').innerHTML = 'valor no permitido';
  25. }else{
  26. document.getElementById('mensaje').innerHTML = '';
  27. }
  28.  
  29. } // fin valida num
  30. } // fin detectar tecla
  31. } // fin función
  32.  
  33. function validarNumero(input){
  34. return (!isNaN(input)&&parseInt(input)==input)||(!isNaN(input)&&parseFloat(input)==input);
  35. }
  36. //]]>
  37. </head>
  38. <form action="#">
  39. texto <input type="text" id="nombre" name="nombre" value="" /><br />
  40. número rango <input type="text" id="precio" name="precio" value="" onkeyup="validar(this.id,event);" /><br />
  41. número rango <input type="text" id="precio2" name="precio2" value="" onkeyup="validar(this.id,event);" /><br />
  42. <input type="submit" value="procesar" /><br /><br />
  43. </form>
  44. <div id="mensaje"></div>
  45. </body>
  46. </html>

funciona correctamente y hay tres campos (en 2 se valida en otro no) y te acepta números enteros como flotantes

Y por favor para otros posts, indicá concretamente cuantos campos hay, si deben validar todos o no etc, ya que esto resulta en respuestas completamente diferentes

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.