La siguiente función que he creado solo toma entrada en decimal y se permite un máximo de 12 caracteres, pero falló en 1 caso en el que si el usuario ingresa, por ejemplo, 12.45 y vuelve a colocar el cursor detrás del decimal y comienza a escribir, no lo hace. No permita que el usuario ingrese aunque la capacidad es de 9 caracteres antes del decimal y 2 después del decimal.
La función se llama en el evento de pulsación de tecla.
Cualquier ayuda es apreciada Gracias!!
la función esNúmeroDecimalConSoloNúmerosyEscalaDosFunc(evento) {
if (!event) event = window.event; var charCode = (event.which) ? event.which : event.keyCode; var elementValue = event.target.value; if (event.key == "." && elementValue.indexOf('.') != -1) { event.preventDefault(); return false; } if ((event.key == "." || isNumberKey(event))) { if ((event.key == "." || isNumberKey(event)) && (elementValue.substring(elementValue.indexOf('.'), elementValue.length).length <= 2)) { return true; } else if (isNumberKey(event)) { if ((elementValue.indexOf('.') != -1)) { event.preventDefault(); return false; } else if (elementValue.length < 9) { if (isNumberKey(event) || event.key.toLowerCase() == "del" || event.key.toLowerCase() == "delete" || charCode == 46) { return true; } else return false; } } else if (event.key == ".") { return true; } event.preventDefault(); return false; } else return false;}