Javascript não funciona

satman1

Power Member
Estou com um problema para validar os formulários usando javascript num form em joomla 1.5. Coloquei o ficheiro validar.js com as funções de validação numa directoria js dentro da pasta do componente.
Coloco este código no início do ficheiro onde se encontra o form:
Código:
<script type="text/javascript">
 <?php require_once(JPATH_COMPONENT.DS.'js'.DS.'validar.js');?>
</script>

Ao chamar o "onSubmit" no form devia disparar um evento, mas não acontece nada. Está aqui a definição do form. A função verificaCampos() encontra-se deste ficheiro js que referi.

Código:
<form action="index.php" name="formEnvio" id="formEnvio" method="post" onSubmit="return verificaCampos()">
 
Última edição pelo moderador:
O ficheiro js foi carregado e aparece lá o código:
Código:
<div class="componentheading">Por favor, preencha os campos e no final carregue no bot&atilde;o "Enviar Dados" no fundo da p&aacute;gina</div>
<script type="text/javascript">
 <!--
function verificaCampos()
{
     /*
     *Fun��o que controla os dados inseridos pelo utilizador
     */
    
    if (document.formEnvio.apelido.value.length==0)
        {
        alert("N�o preencheu um campo obrigat�rio!");
        }
    
}

function verificaDatas (datainicconv, datafimconv)
{
DI = document.getElementById(datainicconv).value;
DF = document.getElementById(datafimconv).value;

SplitDI = DI.split("-");
SplitDF = DF.split("-");

    ano1 = SplitDI[0];
    mes1 = SplitDI[1];
    dia1 = SplitDI[2];
    
    ano2 = SplitDF[0];
    mes2 = SplitDF[1];
    mes2 = SplitDF[2];
    
    if(ano2 <ano1)
    {
     alert("A data de in�cio n�o pode ser posterior � data de fim!");
    }
   if(ano1 == ano2 && mes2 < mes1) )
   {
   alert("A data de in�cio n�o pode ser posterior � data de fim!");
   }
}</script>

<br /><br />
<form action="index.php" name="formEnvio" id="formEnvio" method="post" onSubmit="return verificaCampos()">
 
Última edição pelo moderador:
O ficheiro js foi carregado e aparece lá o código:
Código:
<div class="componentheading">Por favor, preencha os campos e no final carregue no bot&atilde;o "Enviar Dados" no fundo da p&aacute;gina</div>
<script type="text/javascript">
 <!--
function verificaCampos()
{
     /*
     *Fun��o que controla os dados inseridos pelo utilizador
     */
    
    if (document.formEnvio.apelido.value.length==0)
        {
        alert("N�o preencheu um campo obrigat�rio!");
        }
    
}

function verificaDatas (datainicconv, datafimconv)
{
DI = document.getElementById(datainicconv).value;
DF = document.getElementById(datafimconv).value;

SplitDI = DI.split("-");
SplitDF = DF.split("-");

    ano1 = SplitDI[0];
    mes1 = SplitDI[1];
    dia1 = SplitDI[2];
    
    ano2 = SplitDF[0];
    mes2 = SplitDF[1];
    mes2 = SplitDF[2];
    
    if(ano2 <ano1)
    {
     alert("A data de in�cio n�o pode ser posterior � data de fim!");
    }
   if(ano1 == ano2 && mes2 < mes1) )
   {
   alert("A data de in�cio n�o pode ser posterior � data de fim!");
   }
}</script>

<br /><br />
<form action="index.php" name="formEnvio" id="formEnvio" method="post" onSubmit="return verificaCampos()">

Olá, falta-te indicar o retorno da função (true ou false). Deves colocar uma variável de controlo ao longo das validações (tipo var error = 0; ) e nas validações incorrectos mudas (error = 1;)

no final de todas as validações fazes a verificação

Código:
return (error == 0)?true:false;
Assim já deve funcionar.
 
Última edição pelo moderador:
que confusão que ai vai

Código:
switch(erro)
{
   case 1:{
      alert("Não preencheu um campo obrigatório!");
   }
   return false;
}

case 0:
{
   return true;
}

segundo estas tuas chavetas, o "case 0" já está fora do switch. e cada case não precisa de chavetas, apenas de um break no fim. isso ficaria assim:

Código:
switch(erro) {
case 1:
   alert("Não preencheu um campo obrigatório!");
   return false;
   break;

case 0:
   return true;
}
 
Como posso fazer com que a mensagem de alert apresente os acentos correctamente?
Por exemplo, nesta mensagem coloquei o seguinte:"N&atilde;o preencheu um campo obrigat&oacute;rio!". Usei os códigos especiais do HTML, mas não funcionou.
 
Back
Topo