Avatar billede diggerx Nybegynder
25. oktober 2004 - 19:08 Der er 5 kommentarer og
1 løsning

form tjek stopper ikke opdatering

Jeg har følgende kode som jeg bruger på to forskelllige sider.

På den ene side virker det perfekt
På den anden side sender den data selvom der er fejl i indatastningen.

Den eneste forskel på de to sider er feltnavnet.

function Opdaterform()
{
    var sErrString = "";
    var sLF;

    if (!document.form1.B1.clicked) {        
        toggleButton(document.form1.B1);            
        if (document.all) {
            sLF = "\r\n";
        }
        else {
            sLF = "\n";
        }

        if ( document.form1.Opgaveoverskrift.value == "" ) {
            sErrString += " Navn mangler" + sLF;
        }
       
        if ( sErrString != "" ) {
            alert("Der er følgende fejl i din indtastning."  + sLF + sLF + sErrString);
            toggleButton(document.form1.B1);
            return (false);
        }

        document.form1.method = "post";
        document.form1.action = "default.asp?menu=Produkter&page=Kunde_opret_ret.asp";
        document.form1.submit();   
    }
}

function toggleButton (button) {
if (typeof button.disabled != "undefined") {
button.disabled = !button.disabled;
}
else if (button.clicked) {
button.clicked = false;
}
else {
button.clicked = true;
}
}
Avatar billede roenving Novice
25. oktober 2004 - 19:27 #1
Umiddelbart kan jeg ikke se nogen årsag til at den gør sådan, men er det ikke meget lettere at:

<script type="text/javascript">
function validering(f){
  f.B1.disabled = true;
  if(f.Opgaveoverskrift.value=='')    {       
    alert('Du skal udfylde feltet med en overskrift til opgaven!');
    f.navn.focus();
    f.B1.disabled = false;
    return false;
  }
  return true;
}
</script>

<form action="default.asp?menu=Produkter&page=Kunde_opret_ret.asp" method="post" onsubmit="return validering(this);">
Overskrift til opgaven: <input type="text" name="Opgaveoverskrift"><br>
<input type="submit" name="B1">
</form>
Avatar billede roenving Novice
25. oktober 2004 - 19:28 #2
Hov ...

...
    alert('Du skal udfylde feltet med en overskrift til opgaven!');
    f.Opgaveoverskrift.focus();
    f.B1.disabled = false;
...
Avatar billede diggerx Nybegynder
25. oktober 2004 - 19:47 #3
Hej Roenving

Imellemtiden fandt jeg selv ud af det. Jeg skal vist bare være hidsig nok :-)

<input type="submit" name="B1" onclic.....

skal være

<input type="button" name="B1"....

ellers submitter den åbenbart uanset hvad

Jeg kan godt se at din f.B1.disabled = true; er noget enklere end den toggleButton function jeg har fundet.

Jeg har aldrig helt forstået det der med at skrive "this" i parantesen også skriver du f i funtionen.

Skal det forstås sådan js tolker det som

this = document.formnavn (også selvom der ikke er et formnavn)
f = this

det var et lille ekstra spørgsmål, læg et svar
Avatar billede roenving Novice
25. oktober 2004 - 20:21 #4
Ja, 'this' henviser til det objekt, som hændelsen forekommer på, i dette tilfælde formen (som så heller ikke behøver at have et navn !-)

-- og når vi så overfører en pegepind til formen til funktionen som parameter, kan vi hente den ved at sætte en parameter-variabel ind i funktions-definitionslinjen ...

-- og din ændring fra submit til button vil ikke ændre fortolkningen i alle browsere, da en hel del faktisk fortolker et klik på en form-knap som det samme som et klik på en submit-knap !o]

-- og at den submitter har sikkert noget med at gøre, at du ikke kan forhindre en form-afsendelse fra en knap, det _skal_ ske fra onsubmit på formen ...

Velbekomme '-)
Avatar billede diggerx Nybegynder
25. oktober 2004 - 20:27 #5
Jeg lærer det nok en dag ;-)
Avatar billede roenving Novice
25. oktober 2004 - 20:30 #6
Med garanti !-)

-- og tak for point ;~}
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