leonardo-m
1/2/2018 - 6:17 PM

inputs numericos

permite inpust solo numericos con un maximo de decimales

handlerInputNumerico(e) {
        var max = 9;
        var maxlength = 1;

        //Obtiene el valor de max y la cantidad de caracteres del max
        if (e.target.attributes['max'] != null) {
            max = Number(e.target.attributes['max'].nodeValue);
            maxlength = e.target.attributes['max'].nodeValue.length;
        }

        const name = e.target.name;
        let value = e.target.value.replace(/[^0-9.]/g, ""); 

        if (value == "0") {
            value = "0";
        }
        if (value == "") {
            value = "0";
        }

        if (e.target.value.charAt(0) == "0" && e.target.value.length == 2) {
            if (e.target.value.charAt(1) != ".") 
                value = e.target.value.substring(1, 2);
        }
         
        if (value == "") {
            e.target.value = value;
            this.setState({ [name]: value });
        }
        else {
            var valueNumber = 0; 


            if (value.length > maxlength && value.indexOf('.') == -1) { 
                    var valor = value.substring(0, maxlength);
                    valueNumber = Number(valor);
                }
            else {

                    if (value.indexOf('.') != -1) {
                        var cantDec = e.target.value.split(".");
                        if (cantDec[1].length > 4) {

                            valueNumber = value.substring(0, value.indexOf('.') + 5);
                        }
                        else {
                            valueNumber = value;
                        }
                    }
                    else {
                        valueNumber = value;
                    }

                
            }
             
            //Verifica valor contra max
            if (valueNumber < max) {
                e.target.value = valueNumber;
                this.state[name] = valueNumber;
            }
            else {
                e.target.value = valueNumber;
                this.state[name] = max; 
            }
        }
        this.calculoTotalRow();
    }