En un campo de formulario sólo deben ingresarse cifras de porcentaje y para eso sólo se deben permitir números y un solo punto (obvio).
Tengo esta función
Cita:
El problema es que, aunque me valida correctamente el que se ingrese sólo un punto, luego del alert termina publicando la cifra correcta MÁS el último carácter ingresadovar nav4 = window.Event ? true : false;
function acceptNum2a(evt, dato, campo)
{
// Punto = 46
// Backspace = 8, Enter = 13, '0' = 48, '9' = 57
var key = nav4 ? evt.which : evt.keyCode;
if((dato.split(".").length-1) > 1)
{
alert("No puedes ingresar más de un punto (.) en la cifra.");
valor=dato.length;
cifra=dato.slice(0,valor-1);
document.getElementById(campo).value=cifra;
return;
}
else
{return (key <= 13 || (key >= 48 && key <= 57) || key == 46);}
}
function acceptNum2a(evt, dato, campo)
{
// Punto = 46
// Backspace = 8, Enter = 13, '0' = 48, '9' = 57
var key = nav4 ? evt.which : evt.keyCode;
if((dato.split(".").length-1) > 1)
{
alert("No puedes ingresar más de un punto (.) en la cifra.");
valor=dato.length;
cifra=dato.slice(0,valor-1);
document.getElementById(campo).value=cifra;
return;
}
else
{return (key <= 13 || (key >= 48 && key <= 57) || key == 46);}
}
Por ejemplo si ingreso
12.12.5
me aparece el alert y al hacer clic en aceptar queda
12.125
Igual si ingreso
12.12..
me muestra
12.12.
Es decir siempre incluye el último carácter pulsado.
¿Cómo puedo solucionar este inconveniente?.
Una consulta adicional..... ¿hay alguna forma de que se pueda "capturar" el id del campo de formulario desde el cual se está invocando la función?. Consulto esto porque de momento le esto pasando el ID del campo en la función misma, pero pese a haber buscado, no he encontrado una forma (o función) que me permita saber cual es el ID del campo de formulario.
Yo llamo a esta función así:
Cita:
<input type="text" id="porcentaje" onKeyPress="return acceptNum2a(event, this.value,'porcentaje');">
Muchas gracias por el apoyo
Un saludo desde Lima, Perú
P.D.
Me olvidaba.... en el return de la función probé con estas opciones
return null;
return cifra;
return (cifra);
y nada