Avatar billede Slettet bruger
23. maj 2005 - 20:14 Der er 14 kommentarer og
1 løsning

Huske variabler ved fejl.

Hej.

Jeg har nogle sider med formularer på. I to af felterne  indskrives email og der genereres en kode som skal indtastes i næste felt.

Hvis de to passer sammen, så bliver submit knappen aktiv. Det er der lidt javasvript der tager sig af.

Hvis man nu glemmer at udfylde et felt i formularen, kommer den fint frem og siger at man skal udfylde feltet.

MEN, så glemmer den at submit knappen var aktiv. Submit knappen skal helst blive ved med at være aktiv, efter den er blevet det, ellers skal man begynde helt forfra hvergang, og det er der jo ingen der gider.

Kan det lade sig gøre at styre det på en eller anden måde ? Jeg synes ikke jeg kan se hvordan man kan gøre det.
Avatar billede olebole Juniormester
23. maj 2005 - 20:28 #1
<ole>

Ja, men uden kode er det jo ikke til at sige, hvordan. Det kommer jo også anpå, hvornår knappen skal enable's. JavaScript har ingen 'onClairVoyance' event, så du må definere nøje, hvad der skal ske ... og hvornår  ;o)

/mvh
</bole>
Avatar billede Slettet bruger
23. maj 2005 - 20:38 #2
Ja ok, men hvormeget kode :-) Her er javascript check koden:

function validateEmail( email ){
  mailtemp = hex_md5(email);
  mailkode = mailtemp.substr(2,5);
  document.getElementById("EmailVindue").src = "SendKode.php?email="+email;
  document.getElementById("mailMessage").style.display = "block";
}

function validateKode( flt ) {
  if (mailkode == flt.value) {
    flt.form.btnSubmit.disabled = false;
    return true;
  } else {
    window.open("fejludskrift.htm","FejlVindue","top=200,left=200,width=550,height=250,scrollbars=yes");
    return false;
  }
}

Og så noget af formularkoden, for ikke at fylde unødig meget kode ind:

    <tr valign="baseline">
      <td nowrap align="right">e-mail:</td>
      <td><input type="text" name="email" onchange="validateEmail(this.value);" value="<?php echo $_SESSION['email']; ?>" size="50">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">E-mail kode:</td>
      <td><input type="text" name="kode" onchange="validateKode(this);" value="<?php echo $_SESSION['kode']; ?>" size="50">
      </td>
    </tr>

Så er der submit linierne:

      <td nowrap align="center">&nbsp;</td>
      <td><input type="submit" name="btnSubmit" value="Næste >" disabled></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form2">

og submitknappen bliver aktiv når email og emailkode passer sammen. Og så er det at den glemmer at være aktiv, når man har glemt at udfylde andre felter i formularen.

Giver det bedre mening nu :-)
Avatar billede Slettet bruger
23. maj 2005 - 20:51 #3
Min mistanke går på at den kan huske mailkode første gang, men glemmer den så.

Kan man sætte den når den bliver godkendt første gang, så den er aktiv indtil man forlader siden ? Jeg har en anelse om at det vil klare det, men der kan måske så komme andre problemer. Ja, let er det ikke, synes jeg :-)
Avatar billede olebole Juniormester
23. maj 2005 - 21:41 #4
Din adressering til feltet er i hvert fald forkert. Prøv:

function validateKode( f, flt ) {
  if (mailkode == flt.value) {
    f.btnSubmit.disabled = false;
    return true;
  } else {
    window.open("fejludskrift.htm","FejlVindue","top=200,left=200,width=550,height=250,scrollbars=yes");
    return false;
  }
}

- og:

  onchange="validateKode(this.form, this);"
Avatar billede Slettet bruger
23. maj 2005 - 21:50 #5
Det giver ingen ændring. Submitknappen er stadig inaktiv efter fejl.
Avatar billede olebole Juniormester
23. maj 2005 - 22:18 #6
Ja, det er klart ... du har jo ingen værdi af 'mailkode'. Du må lave en værdi, du kan sammenligne med i denne linie:
  if (mailkode == flt.value) {
Avatar billede Slettet bruger
24. maj 2005 - 07:37 #7
Det er jonok både email og mailkode der forsvinder fra javascript'et. Men hvordan lægger man for eksempel en php variabel over i en javascript variabel ? Så kunne jeg 'måske' klare det på den måde.

Men jeg har aldrig set at man kan det. F.eks:

mailkode = <?php $_SESSION['mailkode']; ?>

Men kan det overhovedet lade sig gøre at flytte variablen fra php til javascript ?
Avatar billede roenving Novice
24. maj 2005 - 09:45 #8
Ja !-)

-- du skal bare huske at gøre det til en streng-variabel, hvis det skal være det:

mailkode = "<?php $_SESSION['mailkode']; ?>";
Avatar billede Slettet bruger
24. maj 2005 - 13:00 #9
Ok. Det må jeg prøve at rode med. Jeg har forsøgt lidt, men jeg kan ikke aktivere den submitknap igen. Der skal nok noget hekseri til :-)
Avatar billede Slettet bruger
05. juni 2005 - 14:41 #10
Nu har jeg rodet en del og ikke fundet noget der kan bruges.

Det eneste jeg kan få til at virke er, at slette variablerne til email og kode, og så skal de indtastes igen, så virker det, men det var jo det jeg gerne ville undgå.

Så at holde den submitknap aktiv er åbenbart ikke noget man bare lige gør.

Nogen gode idér til hvad jeg stille op med problemet ?
Avatar billede Slettet bruger
10. juni 2005 - 10:29 #11
Måske I lige skulle lægge et svar for jeres ulejlighed. Der sker ikke mere her, og man kan sikkert ikke lige lave det som jeg vil have det.
Avatar billede roenving Novice
10. juni 2005 - 13:02 #12
-- og det er desværre så gammelt et spørgsmål, at de daglige gennemtrawlinger af spørgsmål, man har deltaget i, sjældent når hertil ...

-- så sålænge eksperten mail-ting har problemer skal man håbe på umiddelbart svar eller håbe på nogen, som bruger lang tid på at gennemgå gamle ,-(

-- els velbekomme '-)
Avatar billede Slettet bruger
12. juni 2005 - 10:54 #13
Så mangler lige olebole at lave et svar også.

Vores postsystem virker åbenbart ikke, da jeg ikke havde fået mail om at der var sket noget i spørgsmålet.

roenving . Selv om spørgsmålet er gammelt må du da meget gerne komme med en løsning .-)
Avatar billede Slettet bruger
15. juni 2005 - 12:26 #14
Nå, der sker nok ikke mere.
Avatar billede roenving Novice
15. juni 2005 - 12:30 #15
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