Javascript para contar decimales después de una coma

Como dice el titulo eso es lo que necesito tengo algo como esto pero me cuenta desde el primer carácter y no espera a que aparezca la coma, agradecería me ayudes, esto es lo que tengo:
function LP_data2(form)
 {
          var key=window.event.keyCode;//codigo de tecla.
            if ((key < 48 || key > 57) && key != 44)
   {//si no es numero o coma
            window.event.keyCode=0;//anula la entrada de texto.
            alert("No se admiten Letras!!!");
            form.monto.style.color="rgb(255,0,0)";
            form.monto.focus();
          }
                 var dec;
                  dec = String(form.monto.value).split(",");
                  form.decHiden.value = dec.pop();
              if(form.decHiden.value.length > 3)//largo de caracteres
                    {
                        window.event.keyCode=0;
                     alert("Máximo 4 decimales!!!");
                 form.monto.style.color="rgb(255,0,0)";
             form.monto.focus();
             } 
    else  
           form.monto.style.color="rgb(0,0,0)";
   }

1 Respuesta

Respuesta
1
No entiendo por qué te puede fallar, ya que lo que haces aquí es correcto:
var dec;
dec = String(form.monto.value).split(",");
form.decHiden.value = dec.pop();

Así debes conseguir la parte decimal sin problemas. ¿Con qué valores está fallando? ¿No estarás usando luego puntos en vez de comas en el formulario?
Ingreso números porque si revisas el código no permite ingresar letras tan solo del 0 al 9 y comas que es el carácter 44 pero cuando comienzo a ingresar números en la caja de texto llega hasta el cuarto carácter y me aparece el mensaje ("Máximo 4 decimales!!!") siendo que aún no se ha ingresado una coma, por favor ve la manera de ayudarme porque me queda poco para irme al manicomio ;-), gracias por responder.
Entiendo, creo que el problema está en que la función split() te está devolviendo la cadena entera que introduces mientras no haya coma y el pop() también, por eso te pasas de caracteres. Con este ejemplo lo verás:
var numero = 12345
partes = numero.split(",") -> 12345
partes.pop() -> 12345    Y esto es mayor que 3 en tamaño....
Creo que así se arregla:
dec = String(form.monto.value).split(",");
var decimales=0;
if (dec.length >1) decimales = dec.pop();
if(decimales.length > 3)//largo de caracteres
...
Así solo sacamos los decimales si es que los hay... Y no necesitas meterlos en un campo oculto para contarlos, los podemos meter en una variable

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas