Jump to content


Photo

Validar Formulário


  • Faça o login para participar
10 replies to this topic

#1 quelizinha

quelizinha

    Turista

  • Usuários
  • 55 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre
  • Interesses:Webdesign<br />Dreamweaver<br />Fireworks<br />Flash<br />Photoshop<br />Javascript<br />HTML<br />PHP

Posted 22/08/2007, 14:57

Oie pessoal,

Estou montando um formulário para o meu site, em que as empresas se cadastram.
Já catei muitos scripts para validação e máscaras, mas ainda estão faltando alguns que não consegui. Se alguém puder dar uma mãozinha:

Preciso validar o email de forma que o script enconte o "@" e o "."
Preciso validar o checkbox.
Preciso validar os selects.
Até encontrei scripts para validar email, mas ao juntar com os existentes ele não funcionou.

Como está o código agora:

&lt;script language="javascript">function formCheck(formobj){   // Nome dos campos que precisam ser preenchidos!   var fieldRequired = Array("nome","email","endereco","numero", "bairro", "cidade", "telefone", "mensagem");   // Descrição dos campos como devem aparecer na mensagem   var fieldDescription = Array("Seu Nome",  "Email", "Endereço", "Número", "Bairro", "Cidade", "Telefone", "Mensagem");   // Mensagem a ser exibida para o usuário   var alertMsg = "Por favor, preencha os seguintes campos:\n";      var l_Msg = alertMsg.length;      for (var i = 0; i < fieldRequired.length; i++){      var obj = formobj.elements[fieldRequired[i]];      if (obj){         switch(obj.type){         case "select-one":            if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){               alertMsg += " - " + fieldDescription[i] + "\n";            }            break;         case "select-multiple":            if (obj.selectedIndex == -1){               alertMsg += " - " + fieldDescription[i] + "\n";            }            break;         case "text":         case "textarea":            if (obj.value == "" || obj.value == null){               alertMsg += " - " + fieldDescription[i] + "\n";            }            break;         default:         }         if (obj.type == undefined){            var blnchecked = false;            for (var j = 0; j < obj.length; j++){               if (obj[j].checked){                  blnchecked = true;               }            }            if (!blnchecked){               alertMsg += " - " + fieldDescription[i] + "\n";            }         }      }   }   if (alertMsg.length == l_Msg){      return true;   }else{      alert(alertMsg);      return false;   }}// --></script>

O formulário:

<form id="comentform" name="cadastro" onsubmit="return formCheck(this);" method="post" action="cadastro.php">     <fieldset>     <label>Nome da Empresa/ Profissional:</label>     <input type="text" name="nome"  maxlength="60">     <label>Site:<span>(campo opcional)</span></label>     <input name="site" type="text" value="http://"  maxlength="70" />     <label>E-mail:</label>     <input type="text" name="email"  maxlength="60">     <label>Rua/Avenida:</label>     <input type="text" name="endereco"  maxlength="90">     <label>Número e Complemento:</label>           <input type="text" name="numero"  maxlength="16">     <label>Bairro:</label>     <input type="text" name="bairro"  maxlength="30" >  	 <label>Cidade:</label>     <input type="text" name="cidade"  maxlength="30" >     <label>Estado ou País:</label>    <select name="estado" size="1" >    <option value="" label="Selecione">Selecione</option>    <option value="AC" label="Acre" >Acre</option>	<option value="AL" label="Alagoas">Alagoas</option>	<option value="AM" label="Amazonas" >Amazonas</option>    <option value="AP" label="Amapá">Amapá</option>    <option value="BA" label="Bahia">Bahia</option>	<option value="CE" label="Ceará" >Ceará</option>	<option value="DF" label="Distrito Federal">Distrito Federal</option>    <option value="ES" label="Espírito Santo" >Espírito Santo</option>    <option value="GO" label="Goiás">Goiás</option>    <option value="MA" label="Maranhão" >Maranhão</option>    <option value="MT" label="Mato Grosso">Mato Grosso</option>    <option value="MS" label="Mato Grosso do Sul" >Mato Grosso do Sul</option>    <option value="MG" label="Minas Gerais">Minas Gerais</option>    <option value="PA" label="Pará" >Pará</option>    <option value="PB" label="Paraíba">Paraíba</option>    <option value="PR" label="Paraná" >Paraná</option>    <option value="PE" label="Pernambuco">Pernambuco</option>    <option value="PI" label="Piauí" >Piauí</option>    <option value="RJ" label="Rio de Janeiro" >Rio de Janeiro</option>    <option value="RN" label="Rio Grande do Norte">Rio Grande do Norte</option>    <option value="RS" label="Rio Grande do Sul" >Rio Grande do Sul</option>    <option value="RO" label="Rondônia">Rondônia</option>    <option value="RR" label="Roraima" >Roraima</option>    <option value="SC" label="Santa Catarina">Santa Catarina</option>    <option value="SP" label="São Paulo" >São Paulo</option>    <option value="SE" label="Sergipe">Sergipe</option>    <option value="TO" label="Tocantins" >Tocantins</option>    </select>    <label>Telefone:</label>    <input type="text" name="telefone" onkeypress="return txtBoxFormat(this, '(99)9999-9999', event);"  maxlength="14" />    <label>Fax:<span>(campo opcional)</span></label>    <input type="text" name="fax" onkeypress="return txtBoxFormat(this, '(99)9999-9999', event);"  maxlength="14" />    <label>Categoria:</label>            <select name="categoria" size="1" >        <option value="">Selecione</option>        <option value="Engenheiros">Jardineiros</option>        <option value="Arquitetos">Paisagistas</option>        <option value="Pedreiros">Agrônomos</option>        <option value="Ferragens">Floriculturas</option>        <option value="Fornecedores">Fornecedores</option>      </select>    <label>Descrição de produtos ou serviços:    <textarea name="mensagem" onKeyDown="textCountecriçõesr(this.form.mensagem,this.form.remLentext,225);" onKeyUp="textCounter(this.form.mensagem,this.form.remLentext,225);" class="descrit"></textarea>Faltam <input type="box readonly" name="remLentext" size="3" value="225" class="mini"> de 225.</label>    <label>Aviso Legal:</label>    <textarea name="textarea" readonly="readonly" wrap="virtual" class="aviso">AVISO LEGAL:    Blá, blá, blá.</textarea>        <label><input  type="checkbox" name="aceito" value=""/> Li e concordo com o Aviso Legal</label>     	<input type="hidden" name="required" value="nome,email,endereco,cidade,telefone,mensagem, checkbox" />    <input type="submit" value="Enviar" />    </fieldset>    </form>

Edição feita por: quelizinha, 24/08/2007, 09:49.


#2 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 23/08/2007, 11:22

Você procurou aqui no fórum ? Existem vários scripts para validar cada um dos itens que você citou. Tenho certeza absoluta pois já respondi todos esses.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#3 quelizinha

quelizinha

    Turista

  • Usuários
  • 55 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre
  • Interesses:Webdesign<br />Dreamweaver<br />Fireworks<br />Flash<br />Photoshop<br />Javascript<br />HTML<br />PHP

Posted 23/08/2007, 20:47

Você procurou aqui no fórum ? Existem vários scripts para validar cada um dos itens que você citou. Tenho certeza absoluta pois já respondi todos esses.


Olha só... vamos modificar a dúvida então.

Minha dificuldade é juntar as funções... encontrei diversos funções para validar email, algumas para select e algumas para checkbox, mas quando tento juntar não funciona. E eu ainda gostaria de deixar os alerts em um só e pela ordem dos campos, o que vai ser meio complicado colocando uma função abaixo da outra.


Para Selects encontrei esse: http://forum.wmonlin...showtopic=89320
Para Checkbox encontrei esse: http://forum.wmonlin...amp;hl=onsubmit

Como chamar mais de uma função no onsubmit? testei algumas soluções sugeridas aqui no fórum mas nada funcionou.

Acho que é isso... é um formulário grande e ainda tem máscaras.
Se alguém puder dar uma mãozinha...

:rolleyes:

Edição feita por: quelizinha, 24/08/2007, 09:55.


#4 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 24/08/2007, 09:56

Realmente tem aqui no fórum sim, mas não com esses parâmetros de busca :(

Te ajudar um pouco com a otimização do código.

Você pode trocar esse trecho inteirinho:
sValue = sValue.toString().replace( "-", "" );
sValue = sValue.toString().replace( "-", "" );
sValue = sValue.toString().replace( ".", "" );
sValue = sValue.toString(
).replace( ".", "" );
sValue =  sValue.toString().replace( "/", "" );
sValue = sValue.toString().replace( "/", "" );
sValue = sValue.toString().replace( ":", "" );
sValue = sValue.toString().replace( ":", "" );
sValue = sValue.toString().replace( "(", "" );
sValue = sValue.toString().replace( "(", "" );
sValue = sValue.toString().replace( ")", "" );
sValue = sValue.toString().replace( ")", "" );
sValue = sValue.toString().replace( " ", "" );
sValue = sValue.toString().replace( " ", "" );

por:
sValue = sValue.toString().replace(/[-.\/:()\s]/ig,'');

Economiza várias linhas ;D

Você usar scripts prontos pegos na net não é muito bom, o legal seria você montar o seu próprio, assim você ficaria craque :ok2:

Vamos pegar esse caso aqui:
<input type="text" name="nome" maxlength="60">
coloque uma "id" nesse campo, para faciliar a validação.
<input type="text" name="nome" id="nome_pessoa" maxlength="60">

Dae lááá no javascript, para validar, você pode fazer assim (lembrando de criar uma função e tudo mais):
if (document.forms.nomeformulario.nome_pessoa.value.lenght <= 0)
		 alert("precisa por o nome da pessoa);
lembrando que o "nomeformulario" é o nome que você deu ao seu form.

Para validar checkboxes e selects é algo parecido.
<select name="estado" id="estado" size="1">

if (document.forms.nomeformulario.estado.selectedIndex <= 0)
		 alert("É necessário escolher um estado.");

para checkbox:
<input type="checkbox" name="aceito" id="aceito" value="" />

if (!document.forms.nomeformulario.aceito.checked)
		 alert("É necessário concordar com os termos.");

Eu sei que você quer algo mastigadinho, a função ali é muito boa, mas exige de quem use conhecer bem html/javascript, por isso recomendo você escrever a sua própria na mão, para você aprender e chegar ao nível da função.

Espero que tudo isso que eu fiz tenha lhe auxiliado. (:

(y)

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#5 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 24/08/2007, 09:59

Tem que ir comendo pelas bordas ... se você tem um formulário "grande" como diz, com muitas features, e não tem conhecimento em Javascript é melhor contratar um profissional especializado, porque é complicado pra caramba. Eu mesmo que faço moderação aqui e tenho um conhecimento um pouco melhor não fiz uma validação completa até hoje, não dá tempo, fica tudo nas coxas... rs

A parte que eu fiz pelo menos eu utilizei Expressõe Regulares, e não essas medidas paliativas que tem por aí afora, veja só um exemplo:

[codebox]
function valida_contato(f){

// Variáveis exclusivas da Função
var countError = 0;
var msgsError = new Array();
var textoPattern = new RegExp('^[\\w\\s\\n\\t\\r!?,\.:;áàãâÁÀÂÃéèêÈEÊíìîÍÌÎóòôõÓÒÔÕúùûÚÙÛçÇ@_ -]+$');
var numeroPattern = new RegExp('^[\\d]+$');


// Formulário de Contato
var frml = document.forms[f.name];

// Campos do Formulário
var cont = frml.elements['contato'];
var tDDD = frml.elements['DDD'];
var fone = frml.elements['telefone'];
var unfe = frml.elements['estado'];
var city = frml.elements['cidade'];
var mail = frml.elements['email'];
var subj = frml.elements['assunto'];
var msgs = frml.elements['mensagem'];

// Agrupa Itens Semelhantes
var texto = [cont,mail,msgs];
var numero = [tDDD,fone];
var escolha = [unfe,city,subj];
if(!frml.elements['empresa'].disabled){
var empr = frml.elements['empresa'];
texto.push(empr);
}

// Validação dos Campos de Texto
for(x in texto){
if(!textoPattern.test(texto[x].value)){
msgsError[countError] = '- Preencha o campo '+String(texto[x].name).toUpperCase();
++countError;
}
}

// Validação dos Campos de Número
for(x in numero){
if(!numeroPattern.test(numero[x].value.replace(/[^.-_ ]+/gi,""))){
msgsError[countError] = '- Preencha o campo '+String(numero[x].name).toUpperCase();
++countError;
}
}

for(x in escolha){
if(escolha[x].value=='none'){
msgsError[countError] = '- Escolha uma opção no campo '+String(escolha[x].name).toUpperCase();
++countError;
}
}

var str = msgsError.join('|');
alert(str.replace(/[\|]+/gi,'\n'));
return (countError != 0) ? false : true;
}

[/codebox]

Faz isso que você citou, valida selects, campos de texto, numéricos, e acho que só ... mas fiz exclusivamente para um formulário existente, para modificar tem que dar uma lida no fonte.


Edit--->

Depois que eu postei eu vi o post do Savior. Só uma correção, se colocar um ID você acessa usando unica e exclusivamente com document.getElementById(), e não como citado. Além do que eu prefiro fazer da seguinte forma:

Acessar formulários com:
- document.forms['nomedoform'];
- document.forms[0], document.forms[1], etc...

E elementos do formulário:
- document.forms['nomedoform'].elements['nomedoelemento'];

Ao invés de document.nomedoform.nomedoelemento, porque na forma que eu utilizo ele já retorna o formulário e seus elementos como vetores, basta aplicar um loop e pronto, manipulação completa de forma prática.. rs

Edição feita por: bimonti, 24/08/2007, 10:06.

WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#6 quelizinha

quelizinha

    Turista

  • Usuários
  • 55 posts
  • Sexo:Feminino
  • Localidade:Porto Alegre
  • Interesses:Webdesign<br />Dreamweaver<br />Fireworks<br />Flash<br />Photoshop<br />Javascript<br />HTML<br />PHP

Posted 24/08/2007, 10:06

Valeu mesmo, para os dois...

Tenho que aprender mesmo.... embora eu tenha muita dificuldade com Javascript.
Vou experimentar montar o códido, como sugeriu o Savior.... se não der certo pelo menos eu aprendo alguma coisa.

Dificilmente eu uso Javascript... mas volta e meia me aparece um formulário, que acaba precisando de máscaras e validações.

Bem que eu gostaria de poder pagar uma pessoa especializada e não esquentar a cabeça com isso... mas no momento tá bem complicado. Quem sabe um dia né? Até lá vou tentar aprender alguma coisa (senão como é que eu vou avaliar o serviço depois, hehehehe) (y)

Abração mesmo!
(se eu resolver depois eu posto)

#7 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 18/09/2017, 04:54

Acheter Du Xenical En Ligne cheap cialis Prix Du Cialis En Pharmacie En France
Cheap Valtrex Cialis Online Kaufen Deutschland
How To Buy Viagra Online From Canada cialis Viagra E Tachicardia

#8 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 04/10/2017, 06:12

Get Legally Clobetasol Best Website Overseas Pharmacy viagra Keflex Canine
Legally Generic Levaquin Ups Priligy Mode D Emploi Keflex Vaginal Bacteria buy viagra online Acheter Cialis Non Generique Acheter Viagra France Paypal Comprar Cialis Andorra
Online Tadacip viagra Find Isotretinoin Legally Tablet How Do You Rate Keflex

#9 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 13/10/2017, 07:32

Persantine viagra Levitra Generique Forum Propecia Pelvico Cialis 20 Anwendung
Amoxicillin In Canines buy viagra Cialis Generique Paiement Paypal Trama Propecia
Baclofene Rembourse viagra Propecia Package Insert Cialis Tadalafil 5mg Generic On Line Progesterone Mail Order Medication

#10 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 30/10/2017, 12:17

Buy Brand Livetra Online Usa viagra Diflucan No Prescription

#11 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 17/11/2017, 08:27

Tribulus Propecia Prix Du Viagra Pharmacie En Le Tampon Amoxicillin Moblie Al buy vardenafil online cheap Gnc Substitute For Viagra
585 Cipa Canadian Approved Pharmacies Where Can I Get Prednisone generic cialis Fedex Zentel Albex Secure With Free Shipping Winston
Non Percription Mobic Cialis Quotidien Viagra Vendesi cialis buy online Generic Viagra Plus 200mg Cipla Tadafil Getting Viagra Overnight




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq