Avatar billede maskso Nybegynder
28. januar 2011 - 09:59 Der er 5 kommentarer og
1 løsning

Udfør function hvis validering = true

Hej

Jeg har et problem med Javascript (som absolut ikke er min stærke side). Jeg har lavet et div med en loadscreen som aktiveres, når man klikker på et element på siden, og det virker fint. Problemet er at jeg har en form på siden, som jeg validerer med javascript. Problemet er at loadscreen'en kommer så snart man klikker på formknappen. Den skal kun komme hvis valideringen går igennem. På de andre elementer på siden, skal den komme med det samme. Jeg håber der er en der kan hjælpe :-)

java script:

        var active = 0;


        function ChangeLayer(now){
        eval("document.getElementById('content" + active + "').style.visibility='hidden';");
        eval("document.getElementById('content" + now + "').style.visibility='visible';");
//    -            var next = document.all ("content" + now) . style;
//    -    current.visibility = "hidden";
//    -    next.visibility = "visible";
        active = now;

    }

//----------------------------------
    function tjeck()
   

                    {
    form = document.additem;
      if ( form.vare.value.length < 1 ) {
      alert ("Du skal angive en vare.");
        return false;
      form.vare.focus();
    }
                        {
    form = document.additem;
      if ( form.vare.value.length > 15 ) {
      alert ("Varens navn er for langt. Max. 15 tegn.");
        return false;
      form.vare.focus();
    }
   
                {
    form = document.additem;
      if ( form.beskr.value.length > 255 ) {
      alert ("Beskrivelsen er for lang. Max 255 tegn.");
        return false;
       
      form.beskr.focus();
    }


}
}

    return true;

    }
   
//----------------------------------


Html:


<div id="content0" style="position:absolute;top:0px;left:0px;z-index:0;visibility:visible;">
</div>

<div id="content1" style="position:absolute;top:0px;left:0px;z-index:0;visibility:hidden;">
</div>


<div id="content2" style="position:absolute;top:0px;left:0px;visibility:hidden;">
<table width="100%" align="center"><tr><td height="100%" align="center" valign="middle">
<br /><br /><br /><br /><img src="images/loadingicon.gif" border="0" />
</td></tr></table></div>


<div id="top" align="center" onclick="ChangeLayer(2);">
<img src="images/spacer.png" width="151" height="33" /><a href="shoppinglist.php"><img src="images/fane2.png" border="0" /></a>
</div>

      <form name="additem" method="post" action="additem2.php" onSubmit="return tjeck() && html2entities(this.vare, this.maal, this.beskr);">


<input placeholder="Varens navn" name="vare" type="text" onblur="initialCap(this);" />

<input type="image" src="images/knap_tilfoejvarer.png" onclick="ChangeLayer(2);" />
Avatar billede majbom Novice
28. januar 2011 - 22:24 #1
hmm, hvorfor bruger du eval() i changelayer-funktionen?

og hvad sker der her:

onSubmit="return tjeck() && html2entities(this.vare, this.maal, this.beskr);"


hvad er der med de &-tegn?
Avatar billede maskso Nybegynder
29. januar 2011 - 11:12 #2
Change layer funktionen virker fint. Der er sikkert mange andre måde at gøre det på, men som sagt er jeg ikke den store javascript haj. Men så længe det virker er det fint for mig.

Det du ser i onSubmit, er andre javascript functions, som jeg kalder ved submit. Jeg har bare valgt ikke at ligge hele sidens 2000 linier kode ind her. Jeg har kun lagt det ind, der er aktuelt, så se bare bort fra det... Det virker også som det skal :-)
Avatar billede majbom Novice
29. januar 2011 - 19:45 #3
du kører jo changelayer uanset om tjeck returnerer true eller false, den skal nok nærmere kaldes i bunden af tjeck, så bliver den kun kaldt, hvis den validerer...
Avatar billede maskso Nybegynder
31. januar 2011 - 13:45 #4
Det har jeg prøvet, men jeg kan ikke rigtigt få det til at virke.
Avatar billede majbom Novice
31. januar 2011 - 14:01 #5
hvordan så det ud?
Avatar billede maskso Nybegynder
03. februar 2011 - 11:58 #6
Jeg har fundet en anden løsning, hvor jeg kører et script parallelt med et andet, i stedet for at arbejde dem sammen. Men tak for hjælpen anyway :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester