Bom dia!
Tenho que verificar se o CNPJ informado em um campo do tipo text é válido ou não.
Já fiz isso no próprio formulário e está funcionando bem.
Fiz uma função e coloquei o mesmo código no validateFields. Daí acontece o erro do título: "Cannot convert NaN to java.lang.Integer".
Segue código do validateFields abaixo:
function validateCnpj(cnpj){
if(cnpj == ''){
mostraAlertas("Informe o CNPJ!");
}
if (cnpj.length < 14){
mostraAlertas("O CNPJ precisa ter 14 dígitos!");
}
// Elimina CNPJs invalidos conhecidos
if (cnpj == "00000000000000" ||
cnpj == "11111111111111" ||
cnpj == "22222222222222" ||
cnpj == "33333333333333" ||
cnpj == "44444444444444" ||
cnpj == "55555555555555" ||
cnpj == "66666666666666" ||
cnpj == "77777777777777" ||
cnpj == "88888888888888" ||
cnpj == "99999999999999")
mostraAlertas("O CNPJ informado (" + cnpj + ") é inválido!");
// Valida DVs
tamanho = cnpj.length - 2
numeros = cnpj.substring(0,tamanho);
digitos = cnpj.substring(tamanho);
var soma = 0;
var pos = tamanho - 7;
for (var i = tamanho; i >= 1; i--) {
soma += numeros.charAt(tamanho - i) * pos--;
if (pos < 2)
pos = 9;
}
var resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0))
mostraAlertas("O CNPJ informado (" + cnpj + ") é inválido!");
tamanho = tamanho + 1;
numeros = cnpj.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)) mostraAlertas("O CNPJ informado (" + cnpj + ") é inválido!");
}
Não consigo de maneira alguma encontrar o erro neste código.
Outra dúvida:
A linguagem nesses eventos é java, javascript... Tem partes que parecem com javascript, mas tem partes de código java... Não consegui entender isso...
Enfim, agradeço imensamente pela ajuda.