Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lab Design

Check de forms

Recommended Posts

Eu escrevi uma função JS para check de form que já uso a muito tempo em php e nunca tive problemas, agora to tentando implementar ela no aspx e tá apresentando um erro de js maluco que num consigo descobrir.

Vou postar o código abaixo comentado inclusive:

 

// Função pra checar todo o form. - Deve ser passado o id do form

// No form os TextBox obrigatorios deve ter o CssClass="required" e qualquer formatação deve ser feita pelo style

 

function checkForm(idForm) {

 

var objForm=document.getElementById(idForm); // aponta para o form

var len=objForm.length; // verifica a quantidade de campos

 

if (objForm.process.value==true) { // verifica se já foi pressionado o botão enviar uma vez

alert('Aguarde, processo em andamento!');

return false;

}

 

 

for (x=0; x < len; x++) { // efetua um loop no form

var required=(objForm[x].className=='required') ? true : false; // pode ser required ou nulo

var id=objForm[x].id.toLowerCase(); // id do campo - baixa a caixa do nome

// alert('id='+objForm[x].id);

var id=id.substr(26, id.length-25); // pega somente o nome do campo, retirando o ctl00_navigate_frmAdd_txt_ que é adicionado automaticamente

// alert('id='+id);

var value=objForm[x].value // pega o value do textbox

 

if (required) { // se required=true o campo é obrigatório, se o campo estiver '', emite a mensagem, focaliza o campo e retorna

if (value.length==0) {

alert("Campo '"+ id +"' não pode ficar em branco !");

objForm[x].focus();

return false;

}

 

// tipo comuns - O telefone foi descartado devido ao usuario poder colocar mais de um no mesmo campo.

if ((id=='email') && !checkEmail(objForm[x])) return false; // checa a sintaxe do email

if ((id=='cep') && !checkCEP(objForm[x])) return false; // checa a sintaxe do CEP

if (id=='cpf' || id=='cnpj') { // valida o CPF ou CNPJ

objForm[x].value=soNumeros(value);

if(!checkCNPJF(objForm[x].id)) return false;

}

}

}

 

objForm.process.value=true; // primeiro post, seta a flag

return true; // retorna OK para o submit.

}

 

// função para formatar CEP

function formataCEP(e) {

 

var code;

if (!e) var e = window.event;

if (e.keyCode) code = e.keyCode;

else if (e.which) code = e.which;

 

var character = String.fromCharCode(code);

 

if(code==8)

{}

else {

if(code > 47 && code < 58) {

//-------------

var conteudo;

conteudo = document.getElementById("ctl00_navigate_frmAdd_txt_cep").value;

len=conteudo.length;

if(len==5) {

conteudo = conteudo + "-";

document.getElementById("ctl00_navigate_frmAdd_txt_cep").value = conteudo;

}

}

else {

event.keyCode = 0;

}

}

}

 

// função para formatar Data

function formataData(e) {

 

var code;

if (!e) var e = window.event;

if (e.keyCode) code = e.keyCode;

else if (e.which) code = e.which;

 

var character = String.fromCharCode(code);

 

if(code==8)

{}

else {

if(code > 47 && code < 58) {

//-------------

var conteudo;

conteudo = document.getElementById("ctl00_navigate_frmAdd_txt_dataNasc").value;

len=conteudo.length;

if(len==2 || len==5) {

conteudo = conteudo + "/";

document.getElementById("ctl00_navigate_frmAdd_txt_dataNasc").value = conteudo;

}

}

else {

event.keyCode = 0;

}

}

}

 

/* ************************************

Criado por : Flavio Theruo Kaminisse

email: falecomjaps@gmail.com

url: http://www.japs.etc.br

Data Criao : 30/08/2005

- Compativel com MSIE e Firefox.

**************************************/

 

//Funcao que valida a data

function checkData(idData) {

var date = document.getElementById(idData).value;

var array_data = new Array;

var ExpReg = new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}");

//vetor que contem o dia o mes e o ano

array_data = date.split("/");

erro = false;

//Valido se a data esta no formato dd/mm/yyyy e se o dia tem 2 digitos e esta entre 01 e 31

//se o mes tem d2 digitos e esta entre 01 e 12 e o ano se tem 4 digitos e esta entre 1000 e 2999

if ( date.search(ExpReg) == -1 )

erro = true;

//Valido os meses que nao tem 31 dias com execao de fevereiro

else if ( ( ( array_data[1] == 4 ) || ( array_data[1] == 6 ) || ( array_data[1] == 9 ) || ( array_data[1] == 11 ) ) && ( array_data[0] > 30 ) )

erro = true;

//Valido o mes de fevereiro

else if ( array_data[1] == 2 ) {

//Valido ano que nao e bissexto

if ( ( array_data[0] > 28 ) && ( ( array_data[2] % 4 ) != 0 ) )

erro = true;

//Valido ano bissexto

if ( ( array_data[0] > 29 ) && ( ( array_data[2] % 4 ) == 0 ) )

erro = true;

}

if ( erro ) {

alert("A Data digitada é Invalida");

document.getElementById(idData).focus();

return false;

}

return true;

}

 

 

 

 

/* **********************************

CPF e CNPJ

************************************/

 

function formataCPF(e) {

 

var code;

if (!e) var e = window.event;

if (e.keyCode) code = e.keyCode;

else if (e.which) code = e.which;

 

var character = String.fromCharCode(code);

 

if(code==8)

{}

else {

if(code > 47 && code < 58) {

//-------------

var conteudo;

conteudo = document.getElementById("ctl00_navigate_frmAdd_txt_cpf").value;

if(conteudo.length==3) {

conteudo = conteudo + ".";

document.getElementById("ctl00_navigate_frmAdd_txt_cpf").value = conteudo;

}

else if(conteudo.length==7) {

conteudo = conteudo + ".";

document.getElementById("ctl00_navigate_frmAdd_txt_cpf").value = conteudo;

}

else if(conteudo.length==11) {

conteudo = conteudo + "-";

document.getElementById("ctl00_navigate_frmAdd_txt_cpf").value = conteudo;

}

 

if(conteudo.length==14) {

if (!cnpjfValido(conteudo)) {

alert("O CPF digitado não é válido!\nPor favor verifique se digitou corretamente.");

return false;

}

else

return true;

}

}

else {

event.keyCode = 0;

}

}

}

 

 

 

// função para validar CPF ou CNPJ - Aplica o módulo 11

function checkCPF(cpfId) {

var source;

source=cpfId.value;

var i, len;

s = soNumeros(source);

len=s.length-2;

if ((len != 9) && (len != 12)) {

alert("O CPF ou CNPJ digitado não está correto!");

cpfId.focus();

return false;

}

 

var c = s.substr(0,len);

var dv = s.substr(len,2);

var d1 = 0;

for (i = 0; i < len; i++) {

if (len==9) d1 += c.charAt(i) * (10 - i);

else d1 += c.charAt(11 - i) * (2 + (i % 8));

}

 

if (d1 == 0) {

alert("O CPF ou CNPJ digitado não está correto!");

cpfId.focus();

return false;

}

d1 = 11 - (d1 % 11);

if (d1 > 9) d1 = 0;

if (dv.charAt(0) != d1) {

alert("O CPF ou CNPJ digitado não está correto!");

cpfId.focus();

return false;

}

 

d1 *= 2;

for (i = 0; i < len; i++) {

if (len < 12) { d1 += c.charAt(i) * (11-i); }

else { d1 += c.charAt(11 - i) * (2 + ((i + 1) % 8));}

}

 

d1 = 11 - (d1 % 11);

if (d1 > 9) d1 = 0;

if (dv.charAt(1) != d1) {

alert("O CPF ou CNPJ digitado não está correto!");

cpfId.focus();

return false;

}

return true;

}

 

 

 

function soNumeros(Str){

// Deixa so' os digitos no numero

 

var Digitos = "0123456789";

var temp = '';

var digito = '';

for (var i=0; i < Str.length; i++) {

digito = Str.charAt(i);

if (Digitos.indexOf(digito) >= 0) {

temp += digito; }

}

return temp;

}

Essa função funciona perfeitamente a muito tempo, não necessitando de ficar criando uma função para cada campo.

Agora no aspx.cs:

 

// Inclui a formatação dos campos CPF, CEP e data.

// o script em js foi retirado do site DvMedia.com.br

protected void Page_Load(object sender, EventArgs e)

{

TextBox cpf = (TextBox)frmAdd.FindControl("txt_cpf");

cpf.Attributes.Add("onkeypress", "return formataCPF(event);");

 

TextBox dataNasc = (TextBox)frmAdd.FindControl("txt_dataNasc");

dataNasc.Attributes.Add("onkeypress", "return formataData(event);");

 

TextBox cep = (TextBox)frmAdd.FindControl("txt_cep");

cep.Attributes.Add("onkeypress", "return formataCEP(event);");

 

Button toSend = (Button)frmAdd.FindControl("btn_Add");

toSend.Attributes.Add("onClick", "return checkForm('aspnetForm');");

}

 

ASPX

<table class="curriculo" border=0 cellpadding=0 cellspacing=2>

<tr>

<td class="label" colspan=3>Nome:<br/>

<asp:TextBox id="txt_nome" width="330px" maxLength="100" Text='<%# Bind("nome") %>' Runat="server" CssClass="required"/>

</td>

<td class="label" nowrap>Data Nasc.:<br/>

<asp:TextBox id="txt_dataNasc" width="80px" maxLength="10" CssClass="required" style="text-align:center" Text='<%# Bind("dataNasc") %>'

Runat="server" />

</tr>

 

<tr>

<td class="label" colspan=3>Endereço:<br />

<asp:TextBox id="txt_ender" width="330px" maxLength="100" CssClass="required" Text='<%# Bind("ender") %>' Runat="server" />

</td>

<td class="label">CEP:<br />

<asp:TextBox id="txt_cep" style="width:80px; text-align:center" CssClass="required" maxLength="9" Text='<%# Bind("cep") %>' Runat="server" />

</td>

</tr>

</table>

<table class="curriculo" border="0" cellpadding="0" cellspacing="2">

<tr>

<td class="label" colspan=2>Bairro:<br />

asp:TextBox id="txt_bairro" width="185px" CssClass="required" maxLength="50" Text='<%# Bind("bairro") %>' Runat="server" />

</td>

<td class="label" colspan=2>Cidade:<br />

<asp:TextBox id="txt_cidade" width="226px" CssClass="required" maxLength="50" Text='<%# Bind("cidade") %>' Runat="server" /></td>

</td>

</tr>

Isso é parte do form.

ERRO:

Ao clicar no botão, o check do campo nome, dataNasc, ender e CEP respondem sem problemas, porém quando vai checar o bairro, dá um erro de elemento não localizado, mesmo eu colocando um alert no inicio do loop, apresenta o erro no JS. Já comentei o campo bairro e o erro permance.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei onde estava o erro mas refiz o script e funcionou, então tá aí pra quem quiser fazer uso dele, basta deixa os meus créditos e caso faça alguma melhoria, poste aqui por favor:

 

Abaixo o novo manipulador de forms.

Observe que para fazer uso dele fora de uma masterpage, a linha "var id=id.substr(22, id.length-22);" deve ser comentada.

 

// JScript File

/* ************************************

Criado por : Lauro A L Brito

email: lauro_lab@yahoo.com.br

Data Criação: Janeiro/2007

- Compativel com MSIE e Firefox.

**************************************/

 

function toUpper(obj) {

obj.value=obj.value.toUpperCase();

}

 

function toLower(obj) {

obj.value=obj.value.toLowerCase();

}

 

 

function checkForm(idForm) {

var objForm=document.getElementById(idForm);

var len=objForm.length;

 

if (objForm.process.value==true) {

alert('Aguarde, processo em andamento!');

return false;

}

/*

for (x=0; x < len; x++) {

alert('id='+objForm[x].id);

}

*/

for (x=0; x < len; x++) {

var required=(objForm[x].className=='required') ? true : false; // pode ser required ou nulo

var id=objForm[x].id.toLowerCase(); // id do campo

// alert('id='+objForm[x].id);

var id=id.substr(22, id.length-22);

var value=objForm[x].value // quantidade máxima

 

if (required) {

if (value.length==0) {

alert("Campo '"+ id.substr(4,id.length-4) +"' não pode ficar em branco !");

objForm[x].focus();

return false;

}

 

// tipo comuns

if ((id.indexOf('dat', 0)!=-1) && (!checkData(objForm[x].id))) return false;

 

if ((id.indexOf('email', 0)!=-1) && (!checkEmail(objForm[x].id))) return false;

 

if ((id.indexOf('cpf', 0)!=-1 || id.indexOf('cnpj', 0)!=-1) && !checkCPF(objForm[x].id)) return false;

}

}

 

objForm.process.value=true;

return true;

}

 

 

 

 

 

 

 

// função para formatar CEP

function formataCEP(e) {

 

var code;

if (!e) var e = window.event;

if (e.keyCode) code = e.keyCode;

else if (e.which) code = e.which;

 

var character = String.fromCharCode(code);

 

if(code==8)

{}

else {

if(code > 47 && code < 58) {

//-------------

var conteudo;

conteudo = document.getElementById("ctl00_navigate_frmAdd_txt_cep").value;

len=conteudo.length;

if(len==5) {

conteudo = conteudo + "-";

document.getElementById("ctl00_navigate_frmAdd_txt_cep").value = conteudo;

}

}

else {

event.keyCode = 0;

}

}

}

 

// função para formatar Data

function formataData(e) {

 

var code;

if (!e) var e = window.event;

if (e.keyCode) code = e.keyCode;

else if (e.which) code = e.which;

 

var character = String.fromCharCode(code);

 

if(code==8)

{}

else {

if(code > 47 && code < 58) {

//-------------

var conteudo;

conteudo = document.getElementById("ctl00_navigate_frmAdd_txt_dataNasc").value;

len=conteudo.length;

if(len==2 || len==5) {

conteudo = conteudo + "/";

document.getElementById("ctl00_navigate_frmAdd_txt_dataNasc").value = conteudo;

}

}

else {

event.keyCode = 0;

}

}

}

 

/* ************************************

Criado por : Flavio Theruo Kaminisse

email: falecomjaps@gmail.com

url: http://www.japs.etc.br

Data Criao : 30/08/2005

- Compativel com MSIE e Firefox.

**************************************/

 

//Funcao que valida a data

function checkData(idData) {

var date = document.getElementById(idData).value;

var array_data = new Array;

var ExpReg = new RegExp("(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}");

//vetor que contem o dia o mes e o ano

array_data = date.split("/");

erro = false;

//Valido se a data esta no formato dd/mm/yyyy e se o dia tem 2 digitos e esta entre 01 e 31

//se o mes tem d2 digitos e esta entre 01 e 12 e o ano se tem 4 digitos e esta entre 1000 e 2999

if ( date.search(ExpReg) == -1 )

erro = true;

//Valido os meses que nao tem 31 dias com execao de fevereiro

else if ( ( ( array_data[1] == 4 ) || ( array_data[1] == 6 ) || ( array_data[1] == 9 ) || ( array_data[1] == 11 ) ) && ( array_data[0] > 30 ) )

erro = true;

//Valido o mes de fevereiro

else if ( array_data[1] == 2 ) {

//Valido ano que nao e bissexto

if ( ( array_data[0] > 28 ) && ( ( array_data[2] % 4 ) != 0 ) )

erro = true;

//Valido ano bissexto

if ( ( array_data[0] > 29 ) && ( ( array_data[2] % 4 ) == 0 ) )

erro = true;

}

if ( erro ) {

alert("A Data digitada é Invalida");

document.getElementById(idData).focus();

return false;

}

return true;

}

 

 

 

 

/* **********************************

CPF e CNPJ

************************************/

 

function formataCPF(e) {

 

var code;

if (!e) var e = window.event;

if (e.keyCode) code = e.keyCode;

else if (e.which) code = e.which;

 

var character = String.fromCharCode(code);

 

if(code==8)

{}

else {

if(code > 47 && code < 58) {

//-------------

var conteudo;

conteudo = document.getElementById("ctl00_navigate_frmAdd_txt_cpf").value;

if(conteudo.length==3) {

conteudo = conteudo + ".";

document.getElementById("ctl00_navigate_frmAdd_txt_cpf").value = conteudo;

}

else if(conteudo.length==7) {

conteudo = conteudo + ".";

document.getElementById("ctl00_navigate_frmAdd_txt_cpf").value = conteudo;

}

else if(conteudo.length==11) {

conteudo = conteudo + "-";

document.getElementById("ctl00_navigate_frmAdd_txt_cpf").value = conteudo;

}

 

if(conteudo.length==14) {

if (!cnpjfValido(conteudo)) {

alert("O CPF digitado não é válido!\nPor favor verifique se digitou corretamente.");

return false;

}

else

return true;

}

}

else {

event.keyCode = 0;

}

}

}

 

 

function checkCPF(id) {

var cpfId=document.getElementById(id)

var source;

source=cpfId.value;

var i, len;

s = soNumeros(source);

len=s.length-2;

if ((len != 9) && (len != 12)) {

alert("O CPF ou CNPJ digitado não está correto!");

cpfId.focus();

return false;

}

 

var c = s.substr(0,len);

var dv = s.substr(len,2);

var d1 = 0;

for (i = 0; i < len; i++) {

if (len==9) d1 += c.charAt(i) * (10 - i);

else d1 += c.charAt(11 - i) * (2 + (i % 8));

}

 

if (d1 == 0) {

alert("O CPF ou CNPJ digitado não está correto!");

cpfId.focus();

return false;

}

d1 = 11 - (d1 % 11);

if (d1 > 9) d1 = 0;

if (dv.charAt(0) != d1) {

alert("O CPF ou CNPJ digitado não está correto!");

cpfId.focus();

return false;

}

 

d1 *= 2;

for (i = 0; i < len; i++) {

if (len < 12) { d1 += c.charAt(i) * (11-i); }

else { d1 += c.charAt(11 - i) * (2 + ((i + 1) % 8));}

}

 

d1 = 11 - (d1 % 11);

if (d1 > 9) d1 = 0;

if (dv.charAt(1) != d1) {

alert("O CPF ou CNPJ digitado não está correto!");

cpfId.focus();

return false;

}

return true;

}

 

 

 

function soNumeros(Str){

// Deixa so' os digitos no numero

 

var Digitos = "0123456789";

var temp = '';

var digito = '';

for (var i=0; i < Str.length; i++) {

digito = Str.charAt(i);

if (Digitos.indexOf(digito) >= 0) {

temp += digito; }

}

return temp;

}

 

// validação de emails

function checkEmail(id) {

var invalid;

invalid = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;

 

objform=document.getElementById(id);

 

if (objform.value == '') {

alert('Campo email não pode ficar me branco!');

objform.focus();

return false;

}

if (invalid.test(objform.value) == false) {

objform.style.color = "red";

alert("Favor informar corretamente seu e-mail.");

objform.focus();

return (false); }

 

return true;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.