Avatar billede laurents Nybegynder
10. august 2005 - 14:26 Der er 7 kommentarer og
1 løsning

Form validering på en "knap" modsat på hele formen

Hej Alle,

Jeg har en formvalidering på et loginscript. I loginscriptet ligger der 3 knapper som submitter: login, opret & glemt password.

Jeg vil gerne have, at min javascript validering KUN eksekveres når der trykkes på "Login" - ikke på de 2 andre knapper.... Men jeg er kørt fast - er der nogen som "lige" kan greje den for mig?

Kode (meget simplificeret):
<script language="Javascript">
  function ValidateF(Form)
      {
        if (Form.username.value.length == 0)
            {
              alert('Brugernavn skal udfyldes før du kan logge på.')
              Form.username.focus()
              return false
            }

        if (Form.password.value.length == 0)
            {
              alert('Password skal udfyldes før du kan logge på.')
              Form.password.focus()
              return false
            }

        return true
      }
</script>

<form method=post name=form action="/login/validate.asp">
Brugernavn: <input type="text" name="username">
Adgangskode: <input type="password" name="password">

<input type=submit name=login value="Log på" OnClick="java script:return ValidateF(this);">
<input type=submit name=submit value="Opret">
<input type=submit name=submit value="Glemt password">
</form>
Avatar billede roenving Novice
10. august 2005 - 14:34 #1
Du skal gøre det på onsubmit på formen, men du kan bare sætte en bestemt værdi på den ene knap, som du også tester !-)

...
        return true
      }
var validate = false;
</script>

<form method=post name=form action="/login/validate.asp" onclick="return !validate || ValidateF(this);">
Brugernavn: <input type="text" name="username">
Adgangskode: <input type="password" name="password">

<input type=submit name=login value="Log på" onclick="validate = true;">
<input type=submit name=submit value="Opret">
<input type=submit name=submit value="Glemt password">
</form>

-- men du skal vel også lave (en i hvert fald delvis !-) validering, hvis det er opret ?-)

-- så kan du også bruge værdien i validate til at bestemme, hvilke felter, der skal valideres !o]
Avatar billede roenving Novice
10. august 2005 - 14:35 #2
Fordi javascript bruger short evaluation, vil scriptet opdage at resultatet bliver sandt, hvis den negerer den oprindelige værdi, så der vil slet ikke blive udført et kald til ValidateF-funktionen, når validate har værdien false !-)
Avatar billede laurents Nybegynder
11. august 2005 - 12:55 #3
Jeg kan godt følge hvad du siger til mig, men nu har jeg prøvet at implementere det i min kode - men - jeg må nok indse, at jeg ikke evner at få det til at spille :-(

Jeg har sågar forsøgt at ligge submit op i java funktionen - også uden held.

Jeg ville meget gerne, som du skriver teste alle 3 knapper - log ind, opret og gelmt password....

Er du til at lokke til, at vise mig hele javascript funktionen med de indlagte test?
Avatar billede roenving Novice
11. august 2005 - 13:24 #4
Lige en ting:

java kan under ingen omstændigheder bruges som forkortelse for javascript, da det jo er et selvstændigt croos-platform fullflown programmeringssprog, hvilket man ik' li'e kan sige javascript er, så brug f.eks. js, hvis du har brug for en forkortelse !-)

-- men f.eks.

<script type="text/avascript">
  function ValidateF(Form){
    if(validate == 0)
      return false;

    if (Form.username.value.length == 0){
      alert('Brugernavn skal udfyldes før du kan bruge denne tjeneste.');
      Form.username.focus();
      return false;
    }

    if (validate !=3 && Form.password.value.length == 0){
      alert('Password skal udfyldes før du kan logge på.');
      Form.password.focus();
      return false;
    }

    if (validate == 2 && (Form.password2.value.length == 0 || Form.password.value != Form.password2.value)){
      alert('Password2 skal udfyldes med det samme som password.');
      Form.password2.value = "";
      Form.password2.focus();
      return false;
    }

    if (validate == 2 && Form.mail.value.length == 0 ){
      alert('Mail-adresse skal angives.');
      Form.mail.focus();
      return false;
    }

    return true;
  }
  var validate = 0;
</script>

<form method="post" name="form" action="/login/validate.asp" onsubmit="return ValidateF(this);">
Brugernavn: <input type="text" name="username"><br>
Adgangskode: <input type="password" name="password"><br>
Adgangskode2: <input type="password" name="password2"><br>
Mailadresse: <input type="text" name="mail"><br>

<input type="submit" name="login" value="Log på" onclick="validate=1">
<input type="submit" name="submit" value="Opret" onclick="validate=2">
<input type="submit" name="submit" value="Glemt password" onclick="validate=3">
</form>
Avatar billede laurents Nybegynder
30. marts 2006 - 11:41 #5
-> roenving
smidder du ikke lige noget som et svar .... det er vist på tide at lukke denne, og du skal sq have nogle point for din tid!
Avatar billede roenving Novice
31. marts 2006 - 17:09 #6
Virkede det ?-)

-- så velbekomme '-)
Avatar billede laurents Nybegynder
31. marts 2006 - 17:16 #7
Så vidt jeg husker virkede det ;-)
Avatar billede roenving Novice
31. marts 2006 - 17:38 #8
-- så 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