Avatar billede the_champ Nybegynder
18. april 2004 - 22:03 Der er 9 kommentarer og
1 løsning

validering af form

Jeg har denne kode som fungere udemærket, bortset fra at den ikke tager hensyn til at den kun skal valiedere formen "test". Hvordan får jeg den til det??

<script type="text/javascript">
  function valider() {
      sel = document.getElementsByName("navn[]");
      if (sel[0].selectedIndex == 0) {alert("Du skal vælge et nr");return false; }
      else return true;
  }
</script>
<form action="test.php" navn="test" method="post" onsubmit="return valider();">
<select name="navn[]" size="1">
<option value="" selected>Vælg størrelse</option>
<option value="92">92</option>
<option value="96">96</option>
</select>
<input type="submit" name="submit" value="Læg i kurv">
</form>
Avatar billede roenving Novice
18. april 2004 - 22:06 #1
Lyder godt nok umiddelbart lidt mærkeligt, at du har forms på den måde, og at det kan være et problem ...

<script type="text/javascript">
  function valider(f) {
      sel = f.getElementsByName("navn[]");
      if (sel[0].selectedIndex == 0) {alert("Du skal vælge et nr");return false; }
      else return true;
  }
</script>
<form action="test.php" navn="test" method="post" onsubmit="return valider(this);">
Avatar billede the_champ Nybegynder
18. april 2004 - 22:15 #2
Det er fordi jeg har flere forms, og hvis ikke den bliver navngivet er formen jo ikke unik. I dit eksemplet er der vist heller ikke taget hensyn til det...
Avatar billede roenving Novice
18. april 2004 - 22:17 #3
Det er præcis ligegyldigt hvad formen hedder, for den vil kun søge indenfor det form-objekt, som overføres med this i kaldet !-)
Avatar billede the_champ Nybegynder
18. april 2004 - 22:21 #4
Jeg kan ikke få dit eksempel til at fungere. Kan du lavet et eksempel hvor der er 2 forms der henviser til hver sit script(validering)!?
Avatar billede roenving Novice
18. april 2004 - 22:38 #5
Men jeg ville selv gøre sådan:

<script type="text/javascript">
function valider(f){
  e = f.elements;
  for(i=0;e.length>i;i++){
    if(e[i].type.indexOf('select')==0&&e[i].name.indexOf('navn')==0&&e[i].selectedIndex==0){
      alert("Du skal vælge et nr på form: "+f.name);
      return false;
    }
  }
  return true;
}
</script>
<form action="test.php" name="test" method="post" onsubmit="return valider(this);">
<select name="navn[]" size="1">
<option value="" selected>Vælg størrelse</option>
<option value="92">92</option>
<option value="96">96</option>
</select>
<input type="submit" name="submit" value="Læg i kurv">
</form>
<form action="test.php" name="test1" method="post" onsubmit="return valider(this);">
<select name="navn[]" size="1">
<option value="" selected>Vælg størrelse</option>
<option value="92">92</option>
<option value="96">96</option>
</select>
<input type="submit" name="submit" value="Læg i kurv">
</form>
<form action="test.php" name="test2" method="post" onsubmit="return valider(this);">
<select name="navn[]" size="1">
<option value="" selected>Vælg størrelse</option>
<option value="92">92</option>
<option value="96">96</option>
</select>
<input type="submit" name="submit" value="Læg i kurv">
</form>
<form action="test.php" name="test3" method="post" onsubmit="return valider(this);">
<select name="navn[]" size="1">
<option value="" selected>Vælg størrelse</option>
<option value="92">92</option>
<option value="96">96</option>
</select>
<input type="submit" name="submit" value="Læg i kurv">
</form>
Avatar billede the_champ Nybegynder
19. april 2004 - 22:43 #6
Det er tæt på men ikke helt det jeg skal bruge. I formen er der flere felter der skal valideres. Jeg kan stadig ikke få til at fungere med det kode jeg har så jeg smider her hele koden. Det jeg har brug for er en validering af dropdown menuen. Den skal alert hvis der ikke bliver valgt noget

<script type="text/javascript">
function validate()
{

    regex = /^[0-9\+ ]+$/;
    liv = document.tjek.elements[2].value;
    height = document.tjek.elements[3].value;
  if (!liv.match(regex) || liv<92 || liv>124)
{

  alert('Livviden skal være mellem 92 og 124 cm. Indtast kun tal');
document.tjek.elements[2].focus();   
return(false);
  }

  if (!height.match(regex) || height<76 || height>112)
{
  alert('Højden skal være mellem 76 og 112 cm. Indtast kun tal');
document.tjek.elements[3].focus();
    return(false);
  }
else
{
return true;
}


}
</script>
<form name="tjek" action="site.php" method="post" onsubmit="return validate()">
<input type="hidden" name="navn[]" value="...">
<select name="navn[]" size="1">
<option value="" selected>Vælg størrelse</option>
<option value="92">92</option>
<option value="96">96</option>
</select>
<input name="navn[]" type="text" size="5">cm
<input name="navn[]" type="text" size="5">cm
<input type="submit" value="Læg i kurv">
</form>
Avatar billede roenving Novice
20. april 2004 - 07:56 #7
Sådan, måske:

<script type="text/javascript">
function validate(f){
  regex = /^\d+$/;
  str = f.elements[1];
  if(str.selectedIndex==0){
    alert('Der skal vælges en størrelse. Vælg venligst.')
    str.focus();
    return false;
  }
  liv = f.elements[2];
  if (!liv.value.match(regex) || +liv.value<92 || +liv.value>124){
    alert('Livviden skal være mellem 92 og 124 cm. Indtast kun tal');
    liv.select();
    liv.focus();   
    return(false);
  }
  height = f.elements[3];
  if (!height.value.match(regex) || +height.value<76 || +height.value>112){
    alert('Højden skal være mellem 76 og 112 cm. Indtast kun tal');
    height.select();
    height.focus();
    return(false);
  }
  return true;
}
</script>
<form name="tjek" action="site.php" method="post" onsubmit="return validate(this);">
<input type="hidden" name="navn[]" value="...">
<table><tr>
<td>&nbsp;Størrelse: </td>
<td><select name="navn[]" size="1">
<option value="" selected>Vælg størrelse</option>
<option value="92">92</option>
<option value="96">96</option>
</select></td>
<td>&nbsp;Livvidde: </td>
<td><input name="navn[]" type="text" size="5" style="text-align:right;">&nbsp;cm</td>
<td>&nbsp;Højde: </td>
<td><input name="navn[]" type="text" size="5" style="text-align:right;">&nbsp;cm</td>
<td><input type="submit" value="Læg i kurv"></td>
</tr></table>
</form>
Avatar billede the_champ Nybegynder
25. april 2004 - 21:32 #8
Undskyld det sene svar, men tak..det lykkes. hvis du giver et svar får du poinene
Avatar billede roenving Novice
26. april 2004 - 15:29 #9
Velbekomme '-)
Avatar billede roenving Novice
26. april 2004 - 22:16 #10
-- og tak for points ;~}
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