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

Validação de formularios

Discussão em 'Web Development' iniciada por moriva, 14 de Maio de 2008. (Respostas: 11; Visualizações: 1020)

  1. moriva

    moriva Power Member

    Podiam-me dizer o porquê de não validar o campo LOCAL neste código.
    Aqui vai o codigo (façam copiar/colar para ser mais rapido):


    Código:
    <html>
    <head>
    <script language="Javascript">
    <!--
    function validar(form) {
    local = document.form.local.value;
    if (local == "") {
    alert("Defina o local do jogo");
    form.local.focus();
    return false;
    }
    }
    
    function validar(form) {
    equipa1 = document.form.equipa1.value;
    if (equipa1 == "") {
    alert("O jogo tem que ser disputado por duas equipas");
    form.equipa1.focus();
    return false;
    }
    }
    
    function validar(form) {
    equipa2 = document.form.equipa2.value;
    if (equipa2 == "") {
    alert("O jogo tem que ser disputado por duas equipas");
    form.equipa2.focus();
    return false;
    }
    }
    </script>
    </head>
    <body>
    <form name="form" onSubmit="validar(form)">
            Local
            <input type="text" name="local"><br>
            <center>   Equipa1 Equipa2
            <center><input type="text" name="equipa1"></input>   vs  <input type="text" name="equipa2"></input><p>
             <input type="submit" value="Gravar"><br>
             </form>
    </body>
    </html>
     
    Última edição pelo moderador: 17 de Maio de 2008
  2. Armadillo

    Armadillo Folding Member

    entao, moriva... olhos abertos ;)
    tens duas funçoes com o mesmo nome. Ou mudas o nome de uma ou aglutinas as duas funçoes numa só.

    cumps

    edit:
    agora fiquei na duvida... mas acho que nao devia ser possivel ter mais que uma funçao com o mesmo nome, para alem de que nao é uma boa pratica de programação.

    edit2:
    so com uma funcao ja dá

    Código:
    <html>
    <head>
    <script language="Javascript">
    <!--
    function validar(form) {
    local = document.form.local.value;
    if (local == "") {
    alert("Defina o local do jogo");
    form.local.focus();
    return false;
    }
    
    
    equipa1 = document.form.equipa1.value;
    if (equipa1 == "") {
    alert("O jogo tem que ser disputado por duas equipas");
    form.equipa1.focus();
    return false;
    }
    
    
    equipa2 = document.form.equipa2.value;
    if (equipa2 == "") {
    alert("O jogo tem que ser disputado por duas equipas");
    form.equipa2.focus();
    return false;
    }
    }
    </script>
    </head>
    <body>
    <form name="form" onSubmit="validar(form)">
    Local
    <input type="text" name="local"><br>
    <center> Equipa1 Equipa2
    <center><input type="text" name="equipa1"></input> vs <input type="text" name="equipa2"></input><p>
    <input type="submit" value="Gravar"><br>
    </form>
    </body>
    </html>
    
     
    Última edição: 14 de Maio de 2008
  3. moriva

    moriva Power Member

    E alguem sabe como colocar dois ONSUBMIT no mesmo formulario???
     
  4. Armadillo

    Armadillo Folding Member

    Código:
    <form name="form" onSubmit="validar1(form); validar2(form)">
    
     
  5. moriva

    moriva Power Member

    o problema é que quando mostra a mensagem em que indica que o campo tem que ser preenchido, ao clicar em OK os campos em que tinha algo ficam vazios.
    Caso nao tenham percebido aqui vai o codigo:

    Código:
    <html>
    <head>
    <script language="Javascript">
    <!--
    function validar(form) {
    local = document.form.local.value;
    if (local == "") {
    alert("Defina o local do jogo");
    form.local.focus();
    return false;
    }
    
    
    equipa1 = document.form.equipa1.value;
    if (equipa1 == "") {
    alert("O jogo tem que ser disputado por duas equipas");
    form.equipa1.focus();
    return false;
    }
    
    
    equipa2 = document.form.equipa2.value;
    if (equipa2 == "") {
    alert("O jogo tem que ser disputado por duas equipas");
    form.equipa2.focus();
    return false;
    }
    }
    </script>
    </head>
    <body>
    <form name="form" onSubmit="validar(form)">
    Local
    <input type="text" name="local"><br>
    <center> Equipa1 Equipa2
    <center><input type="text" name="equipa1"></input> vs <input type="text" name="equipa2"></input><p>
    <input type="submit" value="Gravar"><br>
    </form>
    </body>
    </html>
     
    Última edição pelo moderador: 17 de Maio de 2008
  6. Mavors

    Mavors Power Member

    Podes ter Armadillo.

    É sempre executada a última função.
    Não tens é nenhum beneficio nisso. Às vezes acontece quando incluis vários *.js teres algumas funções com o mesmo nome, e depois tem que se procurar pq é que as coisas não funcionam como pretendemos.

    Dá buraco teres uma função e uma variavel com o mesmo nome tb.

    Tipo:

    var ola = "2";

    function ola(){
    alert("1");
    }
     
  7. Armadillo

    Armadillo Folding Member

    falta o "return" :)
    Código:
    <form name="form" onSubmit="return validar(form)">
    
     
  8. moriva

    moriva Power Member

    Era isso mesmo! Obrigado!
    Mas eu tinha mais uma função para somar os valores dos resultados chamada no ONSUBMIT e que devido a ter colocado aquela função de validação deixou de funcionar.

    O meu código tá assim:

    Código:
    <html>
    <head>        
    <script language="Javascript">
    <!--
    function validar(form) {
    local = document.form.local.value;
    if (local == "") {
    alert("Defina o local do jogo");
    document.form.local.focus();
    return false;
    }
    
    
    equipa1 = document.form.equipa1.value;
    if (equipa1 == "") {
    alert("O jogo tem que ser disputado por duas equipas");
    document.form.equipa1.focus();
    return false;
    }
    
    
    equipa2 = document.form.equipa2.value;
    if (equipa2 == "") {
    alert("O jogo tem que ser disputado por duas equipas");
    document.form.equipa2.focus();
    return false;
    }
    }
    
    function soma(){
    
    document.getElementById("finalequipa1").value = '0'
    document.getElementById("finalequipa2").value = '0'
    var periodo1equipa1 = parseInt(document.getElementById("periodo1equipa1").value);
    var periodo1equipa2 = parseInt(document.getElementById("periodo1equipa2").value);
    var periodo2equipa1 = parseInt(document.getElementById("periodo2equipa1").value);
    var periodo2equipa2 = parseInt(document.getElementById("periodo2equipa2").value);
    document.getElementById("finalequipa1").value = periodo1equipa1 + periodo2equipa1;
    document.getElementById("finalequipa2").value = periodo1equipa2 + periodo2equipa2;
    }
    
    function operacao (objecto, opr){
    if (isNaN(objecto.value)){
    objecto.value=0;
    alert("Só podes introduzir números");
    }else if(parseInt(objecto.value)>=0){
    dec=parseInt(objecto.value);
    if (opr=='mais'){
    objecto.value=dec+1;
    }
    if ((opr=='menos')&&(dec!=0)){
    objecto.value=dec-1;
    }
    }
    }    
    </script>
    <body>
            <form  method="post" action="insere_andebol.php" name="form" onSubmit="return validar(form); soma(form)">
            Local
            <input type="text" name="local"><br>
            <center>   Equipa1 Equipa2
            <center><input type="text" name="equipa1"></input>   vs  <input type="text" name="equipa2"></input><p>
            1ºPeriodo
            <center>        
            <input type="button" name="botaomais1" value='+' onclick='operacao(form.periodo1_equipa1, "mais")'>
            <input type="button" name="botaomenos1" value='-' onclick='operacao(form.periodo1_equipa1, "menos")'>
            <input type="text" id="periodo1equipa1" size="5" name="periodo1_equipa1" value=0>
            <input type="text" id="periodo1equipa2" size="5" name="periodo1_equipa2" value=0>
            <input type="button" name="botaomais2" value='+' onclick='operacao(form.periodo1_equipa2, "mais")'>
            <input type="button" name="botaomenos2" value='-' onclick='operacao(form.periodo1_equipa2, "menos")'><p>
            2ºPeriodo 
            <center>
            <input type="button" name="botaomais3" value='+' onclick='operacao(form.periodo2_equipa1, "mais")'>
            <input type="button" name="botaomenos3" value='-' onclick='operacao(form.periodo2_equipa1, "menos")'>
            <input type="text" id="periodo2equipa1" size="5" name="periodo2_equipa1" value=0 onblur="soma()">
            <input type="text" id="periodo2equipa2" size="5" name="periodo2_equipa2" value=0 onblur="soma()">
            <input type="button" name="botaomais4" value='+' onclick='operacao(form.periodo2_equipa2, "mais")'>
            <input type="button" name="botaomenos4" value='-' onclick='operacao(form.periodo2_equipa2, "menos")'><p>
            <input type="text" name="finalequipa1" id="finalequipa1"></input> 
            <input type="text" name="finalequipa2" id="finalequipa2"></input><p>
            <input type="submit"  value="Gravar"><br>        
            </form>
    </body>
    </html>
    Espero que tenham percebido.
     
    Última edição pelo moderador: 17 de Maio de 2008
  9. Armadillo

    Armadillo Folding Member

    [posta de pescada]
    ja tentaste trocar a ordem de chamada das duas funçoes?
    [/posta de pescada]
     
  10. moriva

    moriva Power Member

    como se faz isso?
    Desculpa a incistência.
     
  11. Armadillo

    Armadillo Folding Member

    de
    Código:
    onSubmit="return validar(form); soma(form)"
    
    para

    Código:
    onSubmit="soma(form); return validar(form);"
    
     
  12. moriva

    moriva Power Member

    Boa!!! Muito Obrigado.
    Agora so tenho que abranger isto a todos os meus ficheiros mas, isso, deixa comigo.Finalmente!
     

Partilhar esta Página