Avatar billede anderswind Nybegynder
22. juli 2003 - 16:33 Der er 5 kommentarer og
1 løsning

hjælp til at stoppe et tryk på et link

Hej alle sammen.

Jeg har lavet en side, der har en onunload liggende i body.
Når folk så går væk fra siden, spørger den dem om de vil gemme deres ændringer (Selvfølgelig kun hvis de har lavet nogen). Hvis de så svare ok, til at de gerne vil gemme, så sender jeg dem vidre til en gem side.

Der mit problem ligger er, når folk trykke ok til at gemne og de så mangler at udfylde nogen felter. Der ligger jeg en alert ind, men jeg kan ikke få den stoppe i at linke vidre til det link de har trykke på.

Så hvordan for jeg den til IKKE at gå vidre til det link de har trykke på ??

Håber at der er nogen der kan hjælpe.
Anders Wind
Avatar billede jytte Nybegynder
22. juli 2003 - 17:49 #1
Måske kan følgende hjælpe:

<script language="JavaScript">
<!--
  function validate(form) {
    if (form.navn.value=="") {
      alert('Du skal have skrevet et navn for at kunne gemme. Prøv igen!');
      form.navn.focus();
      return (false);
    }
    return(true)
  }
//-->
</script>

<form action="http://www.etellerandet.dk" method="post" name="minform"
      onsubmit="return validate(minform);">
navn:
<input type="text" value="" name="navn">&nbsp;
<input type="submit" value="Gem">
</form>
Avatar billede roenving Novice
23. juli 2003 - 00:56 #2
onunload er alt for usikker at basere nogetsomhelst på !-)

Læg i stedet noget ind i onchange på dine felter, så har du en chance for at give en fornuftig reaktion til dine brugere ...
Avatar billede anderswind Nybegynder
23. juli 2003 - 10:55 #3
Hej igen

Jeg kan desværre ikke bruge hverken onsubmit og onchange til mit problem.
Jeg har en helt alm. validering på siden og de reagere også når folk trykke på submit knappen.

Grunden til at jeg bruge onunload er fordi, at hvis folk laver en ændring, men ikke trykker på submit knappen, så skal den minde dem om, at de har lavet en ændring. Og det er så bare det link de har trykke på, at jeg skal havde stoppet, altså så den ikke linker vidre.

Hilsen Anders
Avatar billede jytte Nybegynder
23. juli 2003 - 11:29 #4
Så har jeg et nyt forslag.

For hver eneste formfelt laver du et hiddenfelt.Startværdierne for dine nuværende formfelter og hiddenfelterne skal være de samme. Ved sammenligning kan du nu konstatere om brugeren har lavet ændringer.

Da det er lidt svært i onunload at vide hvilket link der er blevet trykket på foreslår jeg i stedet følgende:


<script language="JavaScript">
<!--
  function AlleFormFelterErIdentiskMedHiddenFormFelterMedStartVaerdi() {
    //indsæt selv kode
  }
  function GoToIfNoChange() {
    if (!AlleFormFelterErIdentiskMedHiddenFormFelterMedStartVaerdi()){
      svar = confirm("Ønsker du at gå videre uden at gemme dine ændringer?")
      if (svar) {
    return(true)
      }
      else {
    return (false)
      }
    }
    else {
      return(true)
    }
  }
//-->
</script>

<a href="etellerandet.htm" onclick="return GoToIfNoChange();">link</a>
Avatar billede roenving Novice
23. juli 2003 - 12:40 #5
Hvorfor kan du ikke bruge onsubmit og onchange ?-)

-- onunload igangsættes splitsekundet før siden i virkeligheden er væk, så hvis du skal have udført noget som bare tager 1/4 splitsekund er koden ude af browserens hukommelse inden udførslen er afsluttet ...
Avatar billede anderswind Nybegynder
12. februar 2004 - 09:43 #6
test
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