Avatar billede kongfjong Nybegynder
22. august 2006 - 17:42 Der er 20 kommentarer og
1 løsning

Validering af checkboxe og postnummer

Hej, jeg har følgende formular:

<form action="folder_check.php" method="post" class="folder" name="folder" onsubmit="return folderCheck()">
<div id="folderFormLeft">
Navn: <input type="text" name="navn" id="navn" class="inputFolder" /><br />
Adresse: <input type="text" name="adres" id="adres" class="inputFolder" /><br />
Postnr.: <input type="text" name="postnr" id="postnr" class="inputFolder" /><br />
By: <input type="text" name="by" id="by" class="inputFolder" /><br />
<input type="submit" value="Godkend" class="folder_knapper" />
</div><div id="folderFormRight">
<input type="checkbox" name="folderID[]" id="folderID" value="php_variabel" class="folderCheckbox" />
</div></form>

Den forsøger jeg at validerer vha. dette java script:

<script type="text/javascript">
  function folderCheck()
  {
    var navn = document.getElementById("navn").value;
    var adresse = document.getElementById("adres").value;
    var postnr = document.getElementById("postnr").value;
    var postnr_int = parseInt(postnr);
    var by = document.getElementById("by").value;
    var foldere = document.folder.folderID;
    var alert_tekst = '';
           
    var submit_val = "true";
    var folder_count = 0;
           
    for (i = 0; i < foldere.length; i++)
    {
        if (foldere[i].checked)
        {
              var submit_val = "true";
              break;
        }
        else
        {
            folder_count++;
        }
    }
           
  if (folder_count == foldere.length)
  {
    alert_tekst += "- Du har ikke valgt en folder!\n";
    submit_val = "false";
  }
           
  if (navn == '')
  {
    alert_tekst += "- Husk at angive et navn!\n";
    submit_val = "false";
  }
           
  if (adresse == '')
  {
    alert_tekst += "- Husk at angive en adresse!\n";
        submit_val = "false";
  }
           
  if (postnr == '')
  {
    alert_tekst += "- Husk at angive et postnummer!\n";
    submit_val = "false";
  }
  else
  {
    if (postnr_int < 1050 || postnr_int > 9990)
    {
        alert_tekst += "- Husk at angive et RIGTIGT postnummer!\n";
        submit_val = "false";
    }
  }

   
  if (by == '')
  {
    alert_tekst += "- Husk at angive en by!\n";
    submit_val = "false";
  }

  if (submit_val == "false")
  {
    alert(alert_tekst);
    return false;
  }
}
</script>

Mit problem består i, at den ikke validerer postnr-feltet korrekt. Som man kan se tester jeg dels for, om der overhovedet er indtastet noget, og om det indtastede er mellem de korrekte værdier. For at tjekke værdier i feltet bruger jeg parseInt(), som jo give 'NaN' hvis ikke det er et tal. Derfor troede jeg også jeg kunne teste på om 'var postnr_int' var lig 'NaN', men det virker tilsyneladende ikke, og derfor submitter formularen selvom man kun indtaster bogstaver...

Dernæst er der et problem med checkbox'ene. De bliver genereret af php, og derfor vil der være et variabelt antal checkboxe og så længe der er mere end en checkbox, virker koden fint nok, men ikke når der kun er en checkbox...

Er der nogle der kan hjælpe mig her?
Avatar billede roenving Novice
22. august 2006 - 17:45 #1
Brug den indbyggede funktion isNaN !-)

alert(isNaN("Karl"));
alert(isNaN("654656"));
Avatar billede kongfjong Nybegynder
22. august 2006 - 17:49 #2
Det hjalp på postnummeret:) Tak;)
Avatar billede kongfjong Nybegynder
22. august 2006 - 17:51 #3
Findes der i øvrigt ikke en side a la php.net for JavaScript? Kunne godt tænke mig lidt hjælp til alle de funktioner osv der findes inden for java script:)
Avatar billede roenving Novice
22. august 2006 - 18:09 #4
Du knne f.eks. starte her: http://www.mozilla.org/js/language/ !-)

-- velbekomme '-)
Avatar billede roenving Novice
22. august 2006 - 18:11 #5
Hov, 100 point er alt for meget, behold de fleste selv !-)
Avatar billede kongfjong Nybegynder
22. august 2006 - 18:39 #6
Jeg håber lige der er en der kan hjælpe med checkboxene også:)
Avatar billede roenving Novice
22. august 2006 - 18:58 #7
Ups, den havde jeg ikke set ...

-- for det første må du ikke have flere elementer, der har det samme id, så du skal nok lave din php-rutine, så de får forskelligt id !-)

-- for det andet vil javascript ikke finde elementet, når navnet er 'folderID[]' (kan være at det netop ved et array af elementer kan findes, og derfor virker !-)

-- for det tredje vil en variabel kun have en length-property, hvis den er et array (eller en tekst-variabel, hvor .length er tekstens længde i karakterer/tegn !-)

Så måske:

...

    var foldere = document.folder.elements["folderID[]"];
    var alert_tekst = '';
           
    var submit_val = "true";
    var folder_count = fLength = 0;
           
    if(foldere && foldere.length){
      fLength = foldere.length;
      for (i = 0; i < fLength ; i++){
        if (foldere[i].checked){
              var submit_val = "true";
              break;
        }else{
            folder_count++;
        }
      }
    }else if(foldere && !foldere.checked)
      folder_count = fLength = 1;
    }else if(!foldere)
      fLength = 1;
    if (folder_count == fLength){
      alert_tekst += "- Du har ikke valgt en folder!\n";
      submit_val = "false";
    }


...
Avatar billede kongfjong Nybegynder
22. august 2006 - 19:24 #8
if(foldere && foldere.length) <- Tjekker du her om foldere er sat og om length kan bruges på foldere?
Avatar billede kongfjong Nybegynder
22. august 2006 - 19:29 #9
Og der bliver kun dannet et array af folderne, hvis to eller flere foldere er valgt, altså to eller flere checkboxes er valgt?
Avatar billede kongfjong Nybegynder
22. august 2006 - 19:31 #10
Hm nu melder den fejl selvom man vælger en checkbox:)
Avatar billede kongfjong Nybegynder
28. august 2006 - 12:37 #11
Ikke nogen der kan hjælpe omkring mit problem med checkboxene?
Avatar billede roenving Novice
30. august 2006 - 12:10 #12
Jeg kan ikke umiddelbart gennemskue problemet, kunne du f.eks. lægge et link til en side med problemet ?-)
Avatar billede kongfjong Nybegynder
30. august 2006 - 13:11 #13
http://martinhjort.net/hudplejeklinikken/folder.php

Som du kan se, så validerer den ikke på checkboxene på trods af at det burde den gøre...
Avatar billede kongfjong Nybegynder
30. august 2006 - 13:15 #14
Tror dog problemet består i, at jeg er nødt til at give checkboxene navner der slutter på [] for at php kan opfatte dem som et array og de tegn duer tilsyneladende ikke i javascript... men så må det kunne fixes på en anden måde måske?
Avatar billede kongfjong Nybegynder
30. august 2006 - 13:17 #15
Uh har måske selv fundet en løsning...
Avatar billede kongfjong Nybegynder
30. august 2006 - 13:21 #16
Den kode der ligger oppe nu, fungerer perfekt ved to eller flere foldere, men ikke når der kun er en. Så kommer den med en fejlmeddelelse selvom man har valgt den der er at vælge:)
Avatar billede kongfjong Nybegynder
08. november 2006 - 09:30 #17
Lukker:)
Avatar billede roenving Novice
12. november 2006 - 05:54 #18
Beklager, at jeg ikke har haft så meget tid til at følge op på dit spørgsmål, men takker for hjælpen til at bruge noget af den ,-(
Avatar billede kongfjong Nybegynder
12. november 2006 - 09:23 #19
Har du brugt noget af den?:)
Avatar billede roenving Novice
13. november 2006 - 01:42 #20
Nej, kun tiden ...
Avatar billede kongfjong Nybegynder
13. november 2006 - 08:09 #21
Hehehe jamen velbekomme så:)
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