Jan 31, 2012, 4:27 PM
[CLOSED] Validators is not working
Hi
In my TextField 'txtCPF', I set a Validator, as follows. It stopped working after the upgrade to version 2.x. I did not find any reference in the Changelog for changes in Validators...
It has changed something? I'm doing something wrong?
In my TextField 'txtCPF', I set a Validator, as follows. It stopped working after the upgrade to version 2.x. I did not find any reference in the Changelog for changes in Validators...
It has changed something? I'm doing something wrong?
<ext:TextField runat="server" ID="txtCPF" FieldLabel="CPF" MaxLength="18" X="5" Y="0" Width="120px"
EnableKeyEvents="true" Validator="ValidaCPF_CNPJ" ValidateOnBlur="true">
<Listeners>
<KeyUp Fn="KeyUpHandler_CPF" />
</Listeners>
</ext:TextField>
The javaScript function set in Validator var ValidaCPF_CNPJ = function (f, e) {
if (f.length > 14) {
return validatorCNPJ(f);
} else {
return validatorCPF(f);
}
};
The code of javaScripts functions called in ValidaCPF_CNPJfunction validatorCPF(cpf) {
//VERIFICA SE O QUE FOI INFORMADO É NUMERO
var vCpf = noMask(cpf);
var status = false;
var dv_informado = 0;
var i = 0;
var digito = [];
var soma = 0;
var posicao = 0;
var dv = 0;
if (vCpf.length == 0) { //se for igual a zero, não valido, mas retorno true, já que não digitou nada
return true;
}
if (vCpf.length > 0 && vCpf.length < 11) {//se for maior que zero (iniciou a digitaçao, mas menor que 11, que é o tamnho que tem que ter o cpf, retorno como inválido, sempre
return false;
}
if (!isNumber(vCpf)) {
status = false;
}
else {
if (
(vCpf == '11111111111') || (vCpf == '22222222222') ||
(vCpf == '33333333333') || (vCpf == '44444444444') ||
(vCpf == '55555555555') || (vCpf == '66666666666') ||
(vCpf == '77777777777') || (vCpf == '88888888888') ||
(vCpf == '99999999999') || (vCpf == '00000000000')
) {
status = false;
}
else {
//PEGA O DIGITO VERIFIACADOR
dv_informado = vCpf.substr(9, 2);
for (i = 0; i <= 8; i++) {
digito[i] = vCpf.substr(i, 1);
}
//CALCULA O VALOR DO 10º DIGITO DE VERIFICA��O
posicao = 10;
soma = 0;
for (i = 0; i <= 8; i++) {
soma = soma + digito[i] * posicao;
posicao = posicao - 1;
}
digito[9] = soma % 11;
if (digito[9] < 2) {
digito[9] = 0;
}
else {
digito[9] = 11 - digito[9];
}
//CALCULA O VALOR DO 11º DIGITO DE VERIFICA��O
posicao = 11;
soma = 0;
for (i = 0; i <= 9; i++) {
soma = soma + digito[i] * posicao;
posicao = posicao - 1;
}
digito[10] = soma % 11;
if (digito[10] < 2) {
digito[10] = 0;
}
else {
digito[10] = 11 - digito[10];
}
//VERIFICA SE O DV CALCULADO É IGUAL AO INFORMADO
dv = digito[9] * 10 + digito[10];
if (dv != dv_informado) {
status = false;
}
else
status = true;
}
}
return status;
}
function validatorCNPJ(cnpj) {
var vCNPJ = noMask(cnpj)
if (vCNPJ.length == 0) { //se for igual a zero, não valido, mas retorno true, já que não digitou nada
return true;
}
if (vCNPJ.length > 0 && vCNPJ.length < 14) {//se for maior que zero (iniciou a digitaçao, mas menor que 11, que é o tamnho que tem que ter o cpf, retorno como inválido, sempre
return false;
}
if (!isNumber(vCNPJ)) {
return false;
}
var cnpj1 = vCNPJ.substr(0,12);
var cnpj2 = vCNPJ.substr(12,2);
var soma = 0;
var digito = 0;
var i = 0;
var j = 0;
var controle = "";
var mult = "543298765432";
for (j = 0; j < 2; j++) {
soma = 0;
for (i = 0; i < 13; i++) {
soma = soma + cnpj1.substr(i, 1) * mult.substr(i, 1);
}
if (j == 1) {
soma += (2 * digito);
}
digito = (soma * 10) % 11;
if (digito == 10) {
digito = 0;
}
controle = controle + digito.toString();
mult = "654329876543";
}
return (controle == cnpj2);
}
Thanks for any help!
Last edited by Daniil; Feb 06, 2012 at 5:09 PM.
Reason: [CLOSED]