SWCat - Soluções para Web

Visitas - 4168

Validador de dados em javascript.

Este é um validador de dados em javascript para uso em formularios. Não há necessidade de nenhum script de programação em ASP, PHP ou CF.
Pode ser utilizado em qualquer documento HTML. Abaixo descrevo passo a passo como deve ser aplicado a seu formulário.

Defina uma array com os campos que quer validar da seguinte forma:

Array( 'nome do campo', tipo de validação, 'Mensagem de erro','permite campo vazio ou não' )

Tipo de Validação:

- chkForNonblank - verirfica se esta vazio
- chkForChecked - verifica se foi selecionado
- chkForIsSelected - verifica se foi selecionado
- chkNumeric - verifica se é numérico
- chkEmail - verifica se o email é valido
- chkDate - verifica se a data é valida

Chamar o script no documento:

<script src='http://seu dominio/validador.js' language="javascript"></script>

Como montar Array:

<SCRIPT LANGUAGE="javascript"> var campos_checar = Array( Array( 'mesinicial', chkForIsSelected, 'Mes deve ser selecionado','sim' ), Array( 'login', chkForNonblank, 'Forneça seu login','nao' ), Array( 'senha', chkForNonblank, 'Forneça sua senha','nao' ), Array( 'nome', chkForNonblank, 'Nome não pode estar vazio.','nao' ), Array( 'email', chkEmail, 'Email não pode estar vazio e deve ser valido.','nao' ), Array( 'telefone', chkNumeric, 'Forneca apenas dados numéricos para o telefone','nao' ), Array( 'nasc', chkDate, 'Forneça a data correta','sim' ), Array( 'sexo', chkForChecked, 'Selecione o Sexo','nao' ) ); </script>

Lembre-se que o último elemento da Array não tem a virgula no final da linha.


Como aplicar no Formulario:

<form action="formulario.php" method="post" name="formulario" id="formulario" onsubmit="return validar(this);">

O script validador.js

// DOM para Opera para pegar corretamente os elementos isDOM = document.getElementById ? 1:0; //****************************************************************************** function validar(f) //****************************************************************************** { for( var i=0; i < campos_checar.length; ++i ) { if (! campos_checar[i][1] (f,campos_checar[i][0],campos_checar[i][2],campos_checar[i][3]) ) { return false ; } } alert('Ok!! Seu formulário foi validado com sucesso.'); return true ; } //****************************************************************************** // //****************************************************************************** function stripSpaces(x) { while (x.substring(0,1) == ' ') x = x.substring(1); return x; } //****************************************************************************** function empty(x) { if (x.length > 0) return false; else return true; } //****************************************************************************** //****************************************************************************** // Função para TEXT and TEXTAREA //****************************************************************************** function chkForNonblank (f,fld,msg) { var frm = f ; var e = f.elements[fld] if ( ! empty(stripSpaces(e.value)) ) return true; alert( msg ); e.focus(); e.select(); return false; } //****************************************************************************** // Função para RADIO e CHECKBOX //****************************************************************************** function chkForChecked (f,fld,msg) { var frm = f ; var e ; var j = 0 ; // Qual elemento de RADIO/CHECKBOX a retornar. if(isDOM) { // Para Opera e = document.getElementsByTagName('INPUT'); // returns a Node List for (var i=0; i<=e.length-1; ++i){ if(e[i].name == fld) { if(j==0)j=i; if ( e[i].checked ) return true; } } }else{ e = f.elements[fld] ; // retorna a array de elementos for( var i=0; i < e.length; ++i ) { if ( e[i].checked ) { return true; break; } } } alert( msg ); e[j].focus() ; return false; } //****************************************************************************** // Funcao para SELECT //****************************************************************************** function chkForIsSelected (f,fld,msg) { var frm = f ; var e = f.elements[fld] if ( ! e.selectedIndex == 0 ) return true; alert( msg ); e.focus() ; return false; } //****************************************************************************** // Funcao para checar entrada de valores numéricos //****************************************************************************** function chkNumeric (f,fld,msg) { var frm = f ; var e = f.elements[fld] if ( !isNaN(parseInt(e.value)) ) return true; alert( msg ); e.focus() ; return false; } //****************************************************************************** // Fucao para validar email. //****************************************************************************** function chkEmail (f,fld,msg) { var frm = f ; var e = f.elements[fld] if (e.value == null){ alert(msg); e.focus(); return (false);} //tirando os espaços vazios no endereço for (x = 1; x < e.value.length; x ++) { e.value= e.value.replace(' ', '')} var emailStr emailStr = e.value; var emailPat=/^(.+)@(.+)$/ var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" var validChars="\[^\\s" + specialChars + "\]" var quotedUser="(\"[^\"]*\")" var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ var atom=validChars + '+' var word="(" + atom + "|" + quotedUser + ")" var userPat=new RegExp("^" + word + "(\\." + word + ")*$") var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$") var matchArray = emailStr.match(emailPat) if (matchArray==null){ alert('O email informado não é válido.'); e.value=""; e.focus(); return (false);} var user=matchArray[1] var domain=matchArray[2] if (user.match(userPat)==null){ alert("O seu Nome de usuário parece não ser válido."); e.value=""; e.focus(); return (false);} var IPArray=domain.match(ipDomainPat) if (IPArray!=null){ for (var i=1;i<=4;i++){ if (IPArray[i]>255){ alert('O endereço do IP parece não ser válido!'); e.value=""; e.focus(); return (false);} } return true;} var domainArray=domain.match(domainPat) if (domainArray==null){ alert('O domínio parece não ser válido !'); e.value=""; e.focus(); return (false);} var atomPat=new RegExp(atom,"g") var domArr=domain.match(atomPat) if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3){ alert('O endereço deve conter três letras de domínio, ou duas letras do país.'); e.value=""; e.focus(); return (false);} if (domArr.length<2){ var errStr="Este endereço não está encontrando o seu provedor!" alert(errStr); e.value=""; e.focus(); return (false);} return true; } //****************************************************************************** // Função para validação de Datas - Permitindo valores nulos na datas //****************************************************************************** function chkDate(f,fld,msg,vazio) { var frm = f var e = f.elements[fld] dataStr = e.value; if (vazio == "sim") { return true; } else { if (dataStr == "") { alert(msg);e.focus(); e.select(); return false; } var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; var matchArray = dataStr.match(datePat); // formato da data ok? if (matchArray == null) { alert("Data Inválida com formato inválido."); e.focus(); e.select(); return false; } dia= matchArray[1]; mes = matchArray[3]; ano = matchArray[4]; if (dia < 1 || dia > 31) { alert("Favor digitar um Dia Válido."); e.focus(); e.select(); return false; } if ((mes==4 || mes==6 || mes==9 || mes==11) && dia==31) { alert("O Mês "+mes+" não possue 31 dias!"); e.focus(); e.select(); return false; } if (mes == 2) { // checando Fevereiro para dia 29 var isleap = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0)); if (dia>29 || (dia==29 && !isleap)) { alert("Fevereiro de " + ano + " não tem " + dia + " dias!"); e.focus(); e.select(); return false; } } if (mes < 1 || mes > 12) { alert("Favor digitar um Mês Válido."); e.focus(); e.select(); return false; } return true; // Data válida } }



O código em um exemplo - Artigo 001 - Fomato ZIP

Qualquer duvida estou a disposição.


Abraços

Carlos
22/07/2004