Avatar billede jensmr Nybegynder
08. august 2010 - 15:29 Der er 5 kommentarer og
1 løsning

array i inputfelter

Jeg har en form

<form action="test.php" onsubmit="return checkform(this);">
<input type="text" name="firstname[0]" id="firstname[0]">


Og noget javascript som skal tjekke om alle felter er udfyldte:

function checkform (form) {
  if (form.firstname[0].value == '') {
    document.getElementById('firstname[0]').style.backgroundColor='yellow';
    alert('fejl');
  }
}


Det virker bare ikke, når feltet hedder firstname[0].

Hvordan gør man så?
Avatar billede Slettet bruger
08. august 2010 - 16:54 #1
Hvorfor gør det også det - istedet for bare:
<input type="text" name="firstname" id="firstname">
Avatar billede jensmr Nybegynder
08. august 2010 - 17:01 #2
Det er et tilmeldings-system, hvor man kan tilmelde x antal personer på én gang. Inputfelterne til navn, adresse etc. oprettes dynamisk når brugeren trykker på "tilføj ekstra person".

Når brugeren submitter kommer personerne til at lægge i et array, som jeg blot kan loope igennem.

Derfor hedder felterne firtname[0], firstname[1]...
Avatar billede olsensweb.dk Ekspert
08. august 2010 - 17:30 #3
prøv dette, syntaxen er ikke særlig køn, men det virker

<script type="text/javascript">
// http://forums.devarticles.com/javascript-development-22/checkbox-array-problem-2758.html
// svar #8

function checkform (form) {
  // if (form.firstname[0].value == '') {
  if (form["firstname[0]"].value == '') { // virker
    // document.getElementById('firstname[0]').style.backgroundColor='yellow';
    document.getElementById(["firstname[0]"]).style.backgroundColor='yellow';
    alert('fejl');
  }
}

</script>
<form action="index.php" onsubmit="return checkform(this);">
<input type="text" name="firstname[0]" id="firstname[0]" >
<input type="submit" name="set" value="load">
</form>
Avatar billede Slettet bruger
08. august 2010 - 17:48 #4
Hov, så lærte man lidt på en søndag også!
- tak ronols.

Lidt mere om []-notation her:
http://www.dev-archive.net/articles/js-dot-notation/
Avatar billede jensmr Nybegynder
09. august 2010 - 08:38 #5
Tak til ronols - det virker :-)
smider du et svar?
Avatar billede olsensweb.dk Ekspert
09. august 2010 - 10:55 #6
svar
denne løsning er måske lidt kønnere, hvor man tager navnet over på inputfeltet.

<script type="text/javascript">

function checkform (form, boxname) {
    lng = form[boxname].length;
    for(i=0; i<lng; i++){
        if (form[boxname][i].value == '') {
            document.getElementById(["firstname["+i+"]"]).style.backgroundColor='yellow';
            alert('fejl');
        }
    }
}

</script>


<form action="index.php" onsubmit="return checkform(this, 'firstname[]');">
<input type="text" name="firstname[]" id="firstname[0]" >
<input type="text" name="firstname[]" id="firstname[1]" >
<input type="submit" name="set" value="load">
</form>
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