Foros del Web » Programando para Internet » Javascript »

convertir punto a coma on keypress

Estas en el tema de convertir punto a coma on keypress en el foro de Javascript en Foros del Web. Hola! Tengo un problema interesante. Lo que necesito es capturar qué tecla se presionó on keypress, y en el caso de ser el punto comun ...
  #1 (permalink)  
Antiguo 17/08/2006, 14:08
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
convertir punto a coma on keypress

Hola!
Tengo un problema interesante.
Lo que necesito es capturar qué tecla se presionó on keypress, y en el caso de ser el punto comun y corriente, reemplazarlo por una coma.
El problema surje porque estoy enviando datos a una db en sql server y cuando se los envío con el punto decimal como separador decimal, lo considera entero, y necesito que lo tome con decimales como corresponde.
Lo que se me ocurre es hacer alguna función que capture la tecla presionada onKeypress u onKeyup, keydown... no hay problema por la diferencia. El hecho es que logre reemplazar el valor de lo ingresado por la coma normal.

Espero puedan ayudarme, ya que estaba finalizando la fase de control de mi aplicación y vengo a detectar semejante problema!!!
Yo por lo pronto iré viendo de hacerlo del otro lado con asp... pero sería mucho mejor javascript para esto me parece.


Muchas gracias a todos de antemano!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 17/08/2006, 14:22
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 5 meses
Puntos: 43
Hola Verinchi!

Prueba con este ejemplo:

Código:
function Analizar()
{
  var $tecla = window.event ? event.keyCode : event.which;
  if($tecla == 190)
  {
    document.getElementById("texto").value += ",";
    return false; 
  }

  return true;
}
Código HTML:
<input type="text" onkeydown="return Analizar()" name="texto" id="texto" /> 
Un saludo!
  #3 (permalink)  
Antiguo 17/08/2006, 14:39
 
Fecha de Ingreso: abril-2006
Mensajes: 80
Antigüedad: 18 años, 1 mes
Puntos: 2
Perdona... hay un par de problemillas en este texto. Primero, habría que incluir el punto del teclado numérico y, segundo, dependiendo del teclado que uses no funcionará ya que el punto no tiene el valor 190 en todos los teclados.

Yo recomiendo hacer una regex con php (o asp aunque no se cmo funciona). La solución sería crear una variable string con los datos que vayas a enviar y luego hacer una peticion que donde encuentre un punto lo cambie por una coma.

Otra cosa que puedes hacer sería mirar si puedes cambiar el tipo de valor a decimal en el campo dnd envias los datos

Saludos!
  #4 (permalink)  
Antiguo 17/08/2006, 14:42
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
está buenísimo!!! lamentablemente el código de tecla del punto no es el 190 y no lo encuentro... pero seguiré buscando en base a esto.
Lo probé con un código conocido y me funciona genial.
Lo único es que además de colocar la coma, coloca el valor de la tecla que estoy presionando... veré si consigo que deje de hacerlo, o a lo sumo que no escriba nada cuando se presiona el punto, obligando a buscar la coma!
De todas formas mil gracias jahepi! me has dado una gran mano!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #5 (permalink)  
Antiguo 17/08/2006, 14:45
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Hola Asyolath!
Es verdad lo que decís... y como el tema depende del teclado jamás voy a estar segura que está funcionando bien... bueno. Deberé hacerlo en asp y a mano no mas.
Rompiendo el campo de texto en todos sus elementos y encontrando si tiene punto, y poniendole coma.
Ahora, por lo de colocarle el valor decimal al campo de texto.... en htm no se puede... o eso es lo que tengo entendido.
De todos modos muchísimas gracias a ambos y un saludo grande!!!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #6 (permalink)  
Antiguo 17/08/2006, 14:56
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Paren las rotativas!!!

Ok... aquí encontré en gamarod un código para reemplazar cadenas de texto.
Colocandolo en el keyup del campo de texto funciona perfectamente, y no necesita que sea el código de tecla!!!
Lo pongo por si a alquien le sirve.

Código:
function Remplaza(entry) {
out = "."; // reemplazar el .
add = ","; // por ,
temp = "" + entry;
while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add + 
temp.substring((pos + out.length), temp.length));
}
document.subform.texto.value = temp;
}
y lo llamo desde:
Código:
<form name="subform">
 <input type="text" name="texto" id="texto" onkeyup="Remplaza(document.subform.texto.value);" />
 </form>
Y voilà!!! lo hace sin ningún inconveniente!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #7 (permalink)  
Antiguo 17/08/2006, 15:02
 
Fecha de Ingreso: abril-2006
Mensajes: 80
Antigüedad: 18 años, 1 mes
Puntos: 2
De nada...

De todos modos te recomiendo usar codigo php en lugar de asp. No se si en asp las regex (regular expressions) existen, pero en php sí, sirven, por ejemplo, para buscar un texto dentro de una cadena y reemplazarlo por otro. Por ejemplo, para tu problema se podría usar lo siguiente:

<codigo html>
<codigo php

$decimal = preg_replace('#(\.)+#', ',', $decimal);

codigo php>
</codigo html>

Ya sé que es un poco difícil de entender pero funciona.

Saludos de nuevo.
  #8 (permalink)  
Antiguo 17/08/2006, 15:11
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 5 meses
Puntos: 43
Es cierto Asyolath, no había tomado ese punto en cuenta.

Un saludo!
  #9 (permalink)  
Antiguo 18/08/2006, 06:43
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Hola Asyolath!
Sinceramente la solución que proponés es interesante, pero puse en el inicio del post, que mi desarrollo ya lo tengo terminado en asp... solo estaba controlando algunos procesos y descubrí este pequeño gran error.
Voy a tener en cuenta el consejo que me das para cuando haga un desarrollo en php, pero cambiar ahora toda mi aplicación por una función pequeña sería un trabajo extensamente en vano.
En asp, realmente creo que no existe la función para trabajar con las regexp... pero bueno, entre otras cosas, el servidor que me tocó para poner en marcha mi aplicación es windows, y no van a querer instalarse un apache y filtro php solo porque a mi se me ocurre... En asp sería mas complejo hacerlo, ya que tendría que descomponer la cadena de texto (el número en cuestión) al llegar a la página que procesa los datos, con un split en el punto, y luego, si el vector resultante tiene mas de un elemento... concatenarlo en una variable con una coma detrás de cada elemento.
Es un poco embolado y sobre todo si es un formulario en el que se ingresan n importes dinámicamente y tengo que hacer este proceso en un loop.
Así que me tendré que arreglar con la función en javascript que puse mas arriba, y rogar por que no falle!
De todos modos repito, gracias por la sugerencia porque no la conocía y en el caso que en algun momento necesite desarrollar en php, seguramente me será muy útil.
Ya la estoy copiando a mi librería de códigos útiles.

Un saludo grande y gracias por la buena onda!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #10 (permalink)  
Antiguo 18/08/2006, 09:30
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 7 meses
Puntos: 4
Cita:
Iniciado por verinchi Ver Mensaje
..
Así que me tendré que arreglar con la función en javascript que puse mas arriba, y rogar por que no falle!

si es de vital importanci el tema del reemplazo, entonses sería de vital importancia que lo hicieras con ASP. No porque tu script en JS pueda fallar, sino porque evitarías los malintencionados que deshabiliten JS.

No creo que te lleve muchoi tiempo modificar el codigo asp para poder conseguirlo.

con un simple: minumero=replace(minumero,".",",") arreglarías casi todo.


saludos
__________________
by Capitán Buscapina
.
  #11 (permalink)  
Antiguo 18/08/2006, 09:38
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Gracias cap.Buscapina!
Justamente es lo que estaba por hacer, no solo por los usuarios que tengan deshabilitado JS en el navegador, sino porque los campos en el form en cuestión son dinámicos, y como deben llevar comas no puedo colocarles un nombre y realizar el split para separarlos cuando lleguen, entonces los nombro Nbre_campo<%=i%> dentro del loop
De modo que JS ni cuenta se da de cuál es el objeto en el que quiero realizar el reemplazo y bueno... no me queda mas que hacerlo por asp.
Lo que si... yo me estaba complicando mucho!!! no sabía que estaba esa función replace, está barbara!!!
Muchísimas gracias por la sugerencia, me viene fenomeno!!!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #12 (permalink)  
Antiguo 19/08/2006, 05:40
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años
Puntos: 0
En Asp las regex (regular expressions) SI existen
  #13 (permalink)  
Antiguo 22/08/2006, 07:18
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Ok Ok! nunca necesité usarlas!!! contento???

Todo bien de todos modos! Si tenés a mano un manualito de referencia o algo similar que pueda consultar para tenerlo mas en cuenta... se agradece!

__________________
Why can't we not be sober?
www.partitorium.com.ar
  #14 (permalink)  
Antiguo 24/08/2006, 15:12
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 21 años
Puntos: 0
http://www.google.es/search?hl=es&q=...asp%22&meta=:-)
  #15 (permalink)  
Antiguo 25/08/2006, 06:27
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Ok! Gracias Sqa212.
Me es de gran utilidad
__________________
Why can't we not be sober?
www.partitorium.com.ar
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 18:29.