1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Javascript não funciona

Discussão em 'Web Development' iniciada por satman1, 6 de Setembro de 2008. (Respostas: 12; Visualizações: 1677)

  1. satman1

    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: 7 de Setembro de 2008
  2. hostmake

    hostmake Power Member

    Mostra como ficou o código JS, depois do php fazer parse ao file.
     
  3. satman1

    satman1 Power Member

    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: 7 de Setembro de 2008
  4. geoblast

    geoblast Power Member

    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: 7 de Setembro de 2008
  5. satman1

    satman1 Power Member

    Funcionou. Obrigado.
     
    Última edição: 6 de Setembro de 2008
  6. MPalhas

    MPalhas Power Member

    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;
    }
     
  7. AliFromCairo

    AliFromCairo Power Member

    Quando tiveres problemas semelhantes, experimenta fazer debug com o Firebug, por exemplo.
     
  8. satman1

    satman1 Power Member

    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.
     
  9. geoblast

    geoblast Power Member

    Tens que usar os códigos unicode uxxxx (tens aqui a tabela).
     
  10. satman1

    satman1 Power Member

    Coloquei os NCR correspondentes aos caracteres que pretendia mas não reconhece.Pensei que fosse do firefox, mas tentei no IE7 e é o mesmo.
     
  11. geoblast

    geoblast Power Member

    assim: alert('C\u00F3digo Postal') ?
     
  12. AliFromCairo

    AliFromCairo Power Member

    Penso que seria mais prático procurares na web por uma função (devem existir bastantes) que faça encoding/decoding para unicode.
     
  13. satman1

    satman1 Power Member

    Estava a colocar os NCR em vez do hexadecimal....Agora já funciona.Obrigado mais uma vez.
     

Partilhar esta Página