Avatar billede aquix Nybegynder
26. juli 2005 - 03:07 Der er 11 kommentarer og
1 løsning

Alert boks i formular?

Hej

Jeg har lavet en formular, hvor der gerne skulle laves følgende funktion: Hvis ALLE felter ikke er udfyldt med data, så bliver en alert boks vist, og data bliver ikke afsendt.

Hvordan laves det :( ?

Takker på forhånd.
Avatar billede roenving Novice
26. juli 2005 - 03:16 #1
Det er et klassisk valideringsscript, f.eks.

<form ... onsubmit="return valider(this);">

<script type="text/javascript">
function valider(f){
  if(f.FELTNAVN1.value=""){
    alert('Du skal udfylde FELTNAVN1');
    f.FELTNAVN1.focus();
    return false;
  }
  if(f.FELTNAVN2.value=""){
    alert('Du skal udfylde FELTNAVN2');
    f.FELTNAVN2.focus();
    return false;
  }
  if(f.FELTNAVN3.value=""){
    alert('Du skal udfylde FELTNAVN3');
    f.FELTNAVN3.focus();
    return false;
  }
  return true;
}
</script>
Avatar billede aquix Nybegynder
26. juli 2005 - 13:01 #2
Hmm, hvordan skal det smides ind i formmailen? Kan umiddelbart ikk lii få det til at virke :S
Avatar billede roenving Novice
26. juli 2005 - 13:10 #3
-- du kan vel se, at det er et form-tag øverst, der skal du sørge for at supplere dit eksisterende formtag med det, som står her ...

-- script-blokken kan stå hvorsomhelst i html-dokumentet !-)
Avatar billede aquix Nybegynder
26. juli 2005 - 13:13 #4
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>

<script type="text/javascript">
function valider(f){
  if(f.team1.value=""){
    alert('Du skal udfylde team1');
    f.team1.focus();
    return false;
  }
  if(f.team2.value=""){
    alert('Du skal udfylde team2');
    f.team2.focus();
    return false;
  }
  if(f.hp.value=""){
    alert('Du skal udfylde hp');
    f.hp.focus();
    return false;

}
  if(f.type.value=""){
    alert('Du skal udfylde type');
    f.type.focus();
    return false;

}
  if(f.result.value=""){
    alert('Du skal udfylde result');
    f.result.focus();
    return false;

  }
  return true;
}
</script>

<table>

<form action="admin_clanwar.php" method="post" name="admin_clanwar.php" onsubmit="return valider(this);">

<tr>
<td>Dit team:</td>        <td><input type="text" name="team1"></td>                 <br>
</tr>
<tr>
<td>Din modstander:</td>    <td><input type="text" name="team2"></td>    <td>    <br>
</tr>
<tr>
<td>Modstanders hjemmeside:</td> <td><input type="text" name="hp"></td>    <td>*Uden http://</td>    <br>
</tr>
<tr>
<td>Type:</td>        <td><input type="text" name="type"></td>                <br>
</tr>
<tr>
<td>Resultat:</td>    <td><input type="text" name="result"</td>    <br>
</tr>
<tr>           
<td><input style="border: 1px; border-style: solid; border-color: #333333; color: #333333; background-color: #FFFFFF" type="submit" value="Tilmeld"></td><td></td>
</tr>

</form>
</table>

</body>
</html>

sådan der, eksempelvis?
Avatar billede roenving Novice
26. juli 2005 - 13:25 #5
Ja !-)

-- bortset fra, at du ikke må placere formtagget på den måde inde i en tabel, men det er nemt klaret, du skal bare bytte rundt på form- og table-tags:

<form action="admin_clanwar.php" method="post" name="admin_clanwar.php" onsubmit="return valider(this);">
<table>

...

</table>
</form>
Avatar billede futte0975 Nybegynder
29. juli 2005 - 12:18 #6
I stedet for at returnere true/false i onsubmit, kan man også vælge en anden løsning.

<form id="form1" action="java script:void(0)" onsubmit="valider()">
<!-- diverse indhold -->
</form>

<script>
function valider ()
{
  // kontrol funktioner
  var form1 = document.getElementById('form1');
  form1.action = 'admin_clanwar.php';
  form1.submit();
}
</script>


"java script:void(0)" gør at formen ikke kan submit under nogen omstændigheder. Funktionen valider() sætter "action" når indholdet er OK og sætter form'en til at submit.

Dette er en alternative løsning der virker upåklageligt. :-)
Avatar billede roenving Novice
29. juli 2005 - 12:30 #7
-- hvorfor har man i det hele taget en onsubmit, som kan aflyse formens afsendelse ?o]

-- Og min erfaring er, at returnerer onsubmit ikke false, vil formen blive submittet uanset hvad ellers, og i dit eksempel ændrer du jo netop void(0)-tingen til noget, så afsendelse vil vel blive forsøgt to gange ...

-- og der er vel ingen grund til at man skal finde et element frem, når man allerede har fat i det ?-)

-- under alle omstændigheder vil det være smartest at medsende selve formen i funktions-kaldet med this !-)
Avatar billede futte0975 Nybegynder
29. juli 2005 - 13:25 #8
Når action er sat til java script:void(0) vil formen ikke gøre noget som helst, man kan gøre det samme nummer ved href i links. Først når form'en har fået en action, vil den forsøge at sende ved kaldet af submit().

Hvordan man får fat i form'en er ikke det spørgsmålet går ud på, hvordan man gør det er helt op til en selv. Jeg lavede bare noget hurtigt eksempel på at forhindre en form i at foretage et submit. ;-)
Avatar billede roenving Novice
29. juli 2005 - 13:27 #9
-- men du ændrer jo netop 'java script:void(0)' til 'admin_clanwar.php' i funktionen ...
Avatar billede futte0975 Nybegynder
29. juli 2005 - 13:32 #10
ja hvis og kun hvis validering opfyldes....

skal nok skrive mere uddybende en anden gang :-)
Avatar billede aquix Nybegynder
28. juli 2007 - 06:11 #11
...
Avatar billede olebole Juniormester
29. juli 2007 - 00:49 #12
<ole>

futte0975 >> At en kode virker er ikke i sig selv et kvalitetsstempel. Den kan sagtens være både uskøn, ulogisk og dårlig. Lyt til roenving ... han kan kun lære dig at kode bedre  ;o)

/mvh
</bole>
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