Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/12/2015, 02:17
Avatar de angel_dope
angel_dope
 
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 5 meses
Puntos: 8
Alert al pulsar punto

Hola, tengo el siguiente problema: tengo un formulario con un montón de campos donde el usuario debe rellenar valores numéricos, el problema está en que algunos usan el punto para separar los millares, otros usan el punto para separar los decimales, otros no usan nada... Lo que más problemas da es el punto como separador de decimales, aunque el de millares a veces también lía, por lo que había pensado varias soluciones:

- Impedir que pongan puntos, que cuando pulsen el punto, no haga nada. Tiene la desventaja de que si no se dan cuenta de que no ha puesto nada, sigan escribiendo pensando que están poniendo decimales.

- Cambiar de forma automática el punto por una coma. En este caso, el inconveniente estaría en que si alguno tiene la costumbre de poner un punto como separador de miles, acabaríamos con un numero raro con varias comas.

- Que cuando pulsen el punto les salte un mensajito diciendo que no se admite el punto, que para separar decimales hay que usar obligatoriamente la coma. Este es el más coñazo para el usuario, pero el que mejor resultado tendría, ya que no podrían poner punto y además se enteraría de ello.

He estado haciendo pruebas con la última opción con este código:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. function displayunicode(e){
  4.     var unicode=e.keyCode? e.keyCode : e.charCode
  5.    if (unicode == 190) {
  6.         alert("No está permitido el uso de puntos. Por favor, use la coma para separar decimales")
  7.     }
  8. }
  9. </script>
  10. <form>
  11. <input type="text" onkeydown="displayunicode(event); this.select()" />
  12. </form>

Pero el problema está en que si uso onkeydown, onkeyup o onkeypress, solo me deja escribir un carácter. O bien va sustituyendo cada vez que pulso una tecla o si pulsas varias de forma seguida, lo que hace es seleccionar lo escrito, con lo que si sigues escribiendo borras lo que había.

Lo que me gustaría es que si el usuario va escribiendo y no pulsa el punto, simplemente no pase nada, que deje seguir escribiendo, y en el caso de que pulse el punto, salte el alert y solo se borre el punto, pero que respete el resto del contenido del campo. ¿Es posible hacerlo?

Salu2 y gracias
__________________
Vayamos por Partes :: Jack el Destripador