Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Alert al pulsar punto

Estas en el tema de Alert al pulsar punto en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/12/2015, 02:17
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 736
Antigüedad: 17 años
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
  #2 (permalink)  
Antiguo 17/12/2015, 06:35
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Alert al pulsar punto

en principio se me ocurre que puedes aunarle en reemplazo
Cita:
function displayunicode(e, este){
var unicode=e.keyCode? e.keyCode : e.charCode
if (unicode == 190) alert("No está permitido el uso de puntos. Por favor, use la coma para separar decimales")
este.value = este.value.replace(/[^\d,]+/g, '');
}

<input type="text" onkeyup="displayunicode(event, this); this.select()" />
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 17/12/2015, 06:57
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 736
Antigüedad: 17 años
Puntos: 8
Respuesta: Alert al pulsar punto

Cita:
Iniciado por IsaBelM Ver Mensaje
en principio se me ocurre que puedes aunarle en reemplazo
Con lo que tu propones, reemplaza todo el valor del campo, con lo que borra todo lo escrito hasta ese momento, pero ya lo tengo solucionado, simplemente hago el reemplazo buscando solo el punto.
Por otra parte, también he solucionado el tema de que me seleccionase lo escrito previamente simplemente quitando el this.select que había en el campo del formulario.
Y por último compruebo tanto el código del punto normal, como el del punto del teclado numérico, que no son iguales! Al final ha quedado así:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     function displayunicode(e, este){
  3.         var unicode=e.keyCode? e.keyCode : e.charCode
  4.         if (unicode == 190 || unicode == 110) { //punto normal (190) y punto del teclado númerico (110)
  5.             alert("No está permitido el uso de puntos. Por favor, use la coma para separar decimales");
  6.             este.value = este.value.replace('.', '');
  7.         }
  8.     }
  9. </script>
  10.  
  11. <form>
  12. <input type="text" onkeydown="displayunicode(event, this);" />
  13. </form>
__________________
Vayamos por Partes :: Jack el Destripador
  #4 (permalink)  
Antiguo 17/12/2015, 08:16
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Alert al pulsar punto

Cita:
Iniciado por angel_dope Ver Mensaje
Con lo que tu propones, reemplaza todo el valor del campo, con lo que borra todo lo escrito hasta ese momento, .....
esto lo has comprobado o simplemente lo presupones??. ejecuta el código, y verás que estás en un error. otro error que cometes o, al menos no has pensado en ello, es que si solamente reemplazas el punto (.), abres la puerta a cadenas como
Código:
aaaaaaa,aaaa
1111aaaaa
1111111-11
..........
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 18/12/2015, 01:50
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 736
Antigüedad: 17 años
Puntos: 8
Respuesta: Alert al pulsar punto

A ver, funciona, más o menos. Resulta que en chrome funciona sin problemas, pones un punto, salta el alert y al aceptar lo borra. En explorer el funcionamiento es un poco extraño... pones un punto, salta el alert, pero no lo borra, si sigues escribiendo y pones otro punto, vuelve a saltar el alert, y borra el primer punto, pero el segundo lo deja :(
En cuanto a las cadenas que comentas, no hay problema, lo único que quiero eliminar son los puntos, lo demás me da igual.
__________________
Vayamos por Partes :: Jack el Destripador
  #6 (permalink)  
Antiguo 18/12/2015, 07:05
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 11 años, 5 meses
Puntos: 1011
Respuesta: Alert al pulsar punto

Cita:
Iniciado por angel_dope Ver Mensaje
[...] En explorer el funcionamiento es un poco extraño... pones un punto, salta el alert, pero no lo borra, si sigues escribiendo y pones otro punto, vuelve a saltar el alert, y borra el primer punto, pero el segundo lo deja :(
y qué versión de ie es esa que se comporta de una manera tan extraña?? por que la 7, 8, 9, 10, 11 y edge, no
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 18/12/2015, 07:07
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 736
Antigüedad: 17 años
Puntos: 8
Respuesta: Alert al pulsar punto

Pues a mi en Explorer 11 es lo que me hace
__________________
Vayamos por Partes :: Jack el Destripador
  #8 (permalink)  
Antiguo 19/12/2015, 11:16
 
Fecha de Ingreso: agosto-2015
Ubicación: En Carúpano
Mensajes: 49
Antigüedad: 4 años, 3 meses
Puntos: 12
Respuesta: Alert al pulsar punto

y con cuantos decimales vas a trabajar? dos?

Etiquetas: comprobacion, onkeypress, onkeyup, teclas
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 12:16.