Pass Onkeypress input value of button

Asked

Viewed 629 times

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 the same, as parameter, to a function through the Onclick of a button, I’m trying this way, but it doesn’t work.

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

the code of the validated function:

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;
        }
    }
}
  • Missing close parentesis here: validaCampo('cnpj', in_cpf_cnpj.value. You can put it in your code validaCampo? So we can help more to understand what might be failing.

  • @Sergio, I edited the content and added the function, I know I could enter the name of the field inside it, but to follow a pattern, I would like to pass via parameter

  • @Sergio, the first option gave error, but the second one worked blz. Thank you!

1 answer

1


There’s a parenthesis missing from 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 it like this in HTML:

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

and in the function thus:

function validaCampo(tipo, name) {

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

Browser other questions tagged

You are not signed in. Login or sign up in order to post.