Ir para conteúdo

POWERED BY:

Arquivado

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

Carcleo

[Resolvido] função js valida tudo

Recommended Posts

ok... é erro de lógica:

 

valida_email(campo)  

essa tua função tem um return.

 

só que depois qndo você chama ela:

        { 
         valida_email(campos); 

você não usa esse return.

 

o correto seria algo como:

{ 
 return valida_email(campos); 

entendeu ?

 

qnto ao .focus(), é um problema de interpretação dos navegadores.

 

 

Atrase a chamada, com um setTimeout(), aguardando uns 100 milisegundos, acredito que vai resolver.

window.setTimeout( 
  function(){ campo.focus(); }, 100 
);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é erro de lógica não. É de conhecimento mesmo.

 

 

Mas, agora funcionou até o focus.

 

Mas, so um pergunta:

 

Se eu colocar o

document.write("<script type='text/javascript' src='valida_email.js'></script>");

No inicio do script (valida_form.js) funciona normal.

 

Mas, se eu colocar ele dentro do else if, ele da que a função valida_email(campos); esta indefinida.

 else if (campos.id == "email") 
 { 
   document.write("<script type='text/javascript' src='valida_email.js'></script>");
   return valida_email(campos); 
 } 

Porque?

 

Como corrigir isso?

 

Eu preciso fazer isso pois eu só quero incluir o código da valida_email.js só se o campo do form tiver ir=email.

 

Como resolver esse problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque?

pq não faz sentido você usar um document.write dentro de um arquivo .js

 

 

Como corrigir isso?

não faça isso. Se tiver q importar js, faça da forma que mostrei, inserindo na tag head.

 

 

Eu preciso fazer isso pois eu só quero incluir o código da valida_email.js só se o campo do form tiver ir=email.

desnecessário.

Mas se você quiser carregar js sobdemanda da forma correta, vai ter q estudar sobre objetos javascript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Partindo do principio de que esse js estão sendo carregados no head do form.php, eles deveriam carregar normal sob demanda não?

 

Porque?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi oq você quis dizer cara..

 

com o termo "sobdemanda", eu quis dizer algo como o __autoload() do php, entendeu?

 

 

@edit:

achei um exemplo aqui:

http://weaponw.com/artigos/5,carregar-javascript-dinamicamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, eu não sei o que acontece comigo.

Eu não estou conseguindo entender como fazer uma coisa tão simples.

 

Só preciso criar uma função em uma pagina js e chamar essa pagina que contem a função a partir de um if em outro js.

 

Não consigo entender.

 

Todos estes exemplos que você enviou não consigo fazer a chamada da pagina que contem a função somente se o if acontecer.

 

Ei, mas espera um pouco ai.

 

Se eu carrego a pagina no inicio, a função se carrega uma vez e fica à disposição da chamada no if quantos vezes for quantidade de loops do laço for. E, se eu deixo para carregar ela dentro do if, cada vez que um campo for email(se bem que só tem um só né?) a função será chamada.

 

mas que confusão, mas nem todo formulario tem cpf, email.

 

É, ja não sei mais o que fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara... carrega mesmo que não use.

 

não há nenhum problema nisso. Faça o simples. Eh pouco, poucas linhas. Carregue no inicio e pronto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, será assim mesmo.

 

a ideia seria assim:

if(condicao)
{
importar outro arquivo js;
chamar uma funçao que esta dentro desse arquvo;
}

Mas, chamar no incio será melhor mesmo.

A propósito, você teria uma ideia melhor para otimizar esse script?

// JavaScript Document
document.write("<script type='text/javascript' src='valida_cpf.js'></script>");

document.write("<script type='text/javascript' src='valida_cnpj.js'></script>");

document.write("<script type='text/javascript' src='valida_email.js'></script>");

function validate(form) 
{ 
   formulario    = document.getElementById(form);
   quantoscampos = formulario.elements.length;

   for (var i = 0; i < quantoscampos; i++) 
{ 
       var campos = formulario.elements[i]; 

       if (  
	     (campos.getAttribute("type")=="text")     ||
		 (campos.getAttribute("type")=="password") ||
		 (campos.getAttribute("type")=="textarea")
		)    
		{  completar="Preencha"; }
       if ( 
	     (campos.getAttribute("type")=="select")   || 
		 (campos.getAttribute("type")=="radio")    ||
		 (campos.getAttribute("type")=="checkbox") ||
		 (campos.getAttribute("type")=="file")
		) 
		{ completar="Selecione"; }


	if (campos.getAttribute("validate") == "true")
	{       
		if (campos.value == "")
		{                
			 alert(completar+" "+campos.getAttribute("textovalida")+": Campo Obrigatório");
			 campos.focus();
			 return false;			 
		 } 
		else 
		{
			if (campos.id == "cpf")   
			{ 
			  return valida_cpf(campos); 
			}
			else if (campos.id == "cnpj")  
			{ 
			  return valida_cnpj(campos); 
			} 
			else if (campos.id == "email") 
			{ 
			  return valida_email(campos); 
			} 
		}
        } 
}
   formulario.submit();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca esses 3 validas ai logo, sem usar o <script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

direto cara... sem esquema nenhum... codigo por código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ata.

 

tendi.

 

Sem chamar arquivo.

 

Colocar o código dos arquivos direto nesse.

 

Ta valendo.

 

Obrigado e desculpe a amolação.

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.