Pass value from the OnkeyPress input of the button

1

I have an input:

<input id="in_cpf_cnpj" name="cpf_cnpj" class="form-control" placeholder="Digite o CNPJ" required autofocus></>

I need to send the value of it, as a parameter, to a function through the OnClick of a button, I'm trying the following way, but it does not work.

<button class="btn btn-block bg-red waves-effect" onclick="validaCampo('cnpj', in_cpf_cnpj.value" type="button">Confirmar</button>

the valid function code Field:

function validaCampo(tipo, valor) {
    //Tipos: CNPJ,
    if (tipo != '') {
        //valida cnpj
        if (tipo == 'cnpj') {
            valor = valor.replace(/[^\d]+/g, '');
            debugger;
            if (valor == '') return false;

            if (valor.length != 14)
                return false;

            // Elimina CNPJs invalidos conhecidos
            if (valor == "00000000000000" ||
                valor == "11111111111111" ||
                valor == "22222222222222" ||
                valor == "33333333333333" ||
                valor == "44444444444444" ||
                valor == "55555555555555" ||
                valor == "66666666666666" ||
                valor == "77777777777777" ||
                valor == "88888888888888" ||
                valor == "99999999999999")
                return false;

            // Valida DVs
            tamanho = valor.length - 2
            numeros = valor.substring(0, tamanho);
            digitos = valor.substring(tamanho);
            soma = 0;
            pos = tamanho - 7;
            for (i = tamanho; i >= 1; i--) {
                soma += numeros.charAt(tamanho - i) * pos--;
                if (pos < 2)
                    pos = 9;
            }
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(0))
                return false;

            tamanho = tamanho + 1;
            numeros = valor.substring(0, tamanho);
            soma = 0;
            pos = tamanho - 7;
            for (i = tamanho; i >= 1; i--) {
                soma += numeros.charAt(tamanho - i) * pos--;
                if (pos < 2)
                    pos = 9;
            }
            resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
            if (resultado != digitos.charAt(1))
                return false;

            return true;
        }
    }
}
    
asked by anonymous 11.06.2017 / 13:03

1 answer

1

I'm missing a parenthesis in your code, and I suggest another way to send the input value:

Alternative 1 is to keep the function as is and do:

onclick="validaCampo('cnpj', document.getElementByID('in_cpf_cnpj').value)"

Another better alternative would be to have this in HTML:

onclick="validaCampo('cnpj', 'in_cpf_cnpj')"

and in function like this:

function validaCampo(tipo, name) {

    var input = document.querySelector('[name="' + name + '"']);
    var valor = input.value;
    // o resto igual
    
11.06.2017 / 13:12