Avatar billede jamola Nybegynder
19. oktober 2003 - 13:18 Der er 20 kommentarer og
1 løsning

Overførsel af et array fra en form til et javascript

Jeg har følgende java script:
function tjekform(frm) {
  emailtabel = new Array(frm.antal_i.value);
  emailtabel[1] = frm.emailadr[1].value;
  alert("emailadresse: " + emailtabel[1]);
}
Jeg får følgende fejl:
Error: 'emailadr.1' is null or not an object.
Hvordan får jeg dette til at virke?
Avatar billede elskermad.dk Nybegynder
19. oktober 2003 - 13:49 #1
function tjekform(frm) {
  emailtabel = new Array(frm.antal_i.value);
  emailtabel[1] = frm.emailadr.value;
  alert("emailadresse: " + emailtabel[1]);
}

vil jeg tro... en form name kan ikke indeholde []
Avatar billede skovenborg Nybegynder
19. oktober 2003 - 14:09 #2
det kommer an på om hvad det er...

Hvis du fx bruger en radiobutton eller checkbox skal du også medtage et [indexTal] i dit javascript. Men du har ret i at et navn ikke må indeholde []-tegn.

jamola>> Kunne vi ikke få din formen eller siden at se ?-)
Avatar billede jamola Nybegynder
19. oktober 2003 - 15:18 #3
Mit inputfelt i formen ser grundlæggende således ud (forkortet) og er skabt ved hjælp af asp:
<%
    i = 0
    Do While not rsKontaktperson.EOF
      i=i+1
      response.write("<tr><td>")
      response.write("<input class='inputfelt2' type='text' name='emailadr[" & i & "]' value='" & rsKontaktperson("EmailAdr") & "' />")
      response.write("</td><td class='alert'>")
      response.write("<input class='alert' type='checkbox' name='slettes[" & i & "]' value='ja' /></div>")
      response.write("</td></tr>")
      rsKontaktperson.MoveNext
    Loop
    response.write("<input type='hidden' name='antal_i' value='" & i & "' />")
  %>
Avatar billede skovenborg Nybegynder
19. oktober 2003 - 16:06 #4
ja, du må ændre navnet hvis du skal gøre dig forhåbninger om at det skal virke.
Du kunne fx kalde den:
name='emaailad"&i&"'
og ligeledes med slettes (ved dog ikke om det er sådan du siger i asp ;-)
Avatar billede skovenborg Nybegynder
19. oktober 2003 - 16:14 #5
...også ændre scriptet ligesom elskermad.dk foreslår:
function tjekform(frm) {
  emailtabel = new Array(frm.antal_i.value);
  emailtabel[1] = frm.emailadr1.value;
  alert("emailadresse: " + emailtabel[1]);
}
Avatar billede olebole Juniormester
19. oktober 2003 - 16:33 #6
<ole>

Et navn på et HTML-element må _gerne_ indeholde []. Det er helt i overensstemmelse med HTML-standarden.
I JavaScript kan den slags navne dog godt skabe problemer, hvis man ikke ved, hvordan se skal tackles:
  document.FORMNAVN.elements["navn[]"][1]
hiver således fat i det andet felt med navnet 'navn[]' i formen 'FORMNAVN'

/mvh
</bole>
Avatar billede skovenborg Nybegynder
19. oktober 2003 - 16:36 #7
tænkt det viste jeg ikke - men du har jo også ret i det er lidt bøvet at bruge det på den måde.

Tak for tippet ;-)
Avatar billede olebole Juniormester
19. oktober 2003 - 16:36 #8
PS: men tidligere misforstod jeg såmænd også selv standarden på dette punkt  :)
Avatar billede olebole Juniormester
19. oktober 2003 - 16:42 #9
Du må også gerne bruge entities, som f.eks. '&oslash;'. I name-attributten kan som udgsngspunkt bruges alle tegn, der indeholdes i CDATA-definitionen.

Og nej, det er ikke spor 'bøvet'. Det er f.eks. nøjagtig samme måde, man er nødt til at tilgå radio-buttons på i JS  :)
/mvh
Avatar billede elskermad.dk Nybegynder
19. oktober 2003 - 16:49 #10
okay så har jeg da os lært lidt idag... synes jeg da ellers jeg havde læst herinde på E en dag!
Avatar billede skovenborg Nybegynder
19. oktober 2003 - 17:40 #11
olebole>> Jeg mente bare det var bøvet at skulle skrive
document.formnavn.elements["navn[]"]...

i forhold til at du kun havde et enkelt felt som hed "navn" og så bare skrev
document.formnavn.navn....  (hvis du forstår)

Tænkte nemlig før at det ville være lettere hvis han bare kaldte felterne for emailadr1,emailadr2... og så undgik lidt tastearbejde ;-)
Avatar billede olebole Juniormester
19. oktober 2003 - 17:44 #12
... men får så fire gange mere taste-arbejde i server-script'et  ;o)
/mvh
Avatar billede skovenborg Nybegynder
19. oktober 2003 - 17:46 #13
jaja - det kommer an på hvad han skal bruge det til ;-)
nåmen lad det nu ligge...
Avatar billede olebole Juniormester
19. oktober 2003 - 17:59 #14
skovenborg >> Årsagen til man bruger brackets i navnet er, at så har man værdierne liggende i et array på serveren.
Fire felter med navnet 'skovenborg[]' vil på serveren give et array med fire elementer. Det sparer taste-arbejde - men vigtigere: det sparer server-muskler, da du undgår at skulle hente værdierne i løkker  ;o)
/mvh
Avatar billede skovenborg Nybegynder
19. oktober 2003 - 18:04 #15
det rigtigt - nu forstår jeg godt hvor du vil hen. Rart at lære lidt mere ;-)
Avatar billede olebole Juniormester
19. oktober 2003 - 18:11 #16
Hehe ... det er også derfor, jeg fortsatte med at forklare. Jeg kender dig jo efterhånden nogenlunde og ved, det ikke er spildte kræfter  ;o)
/mvh
Avatar billede roenving Novice
20. oktober 2003 - 00:08 #17
-- har ik' li'e testet, men går da ud fra at den også vil kunne bruges i en getElementById('name[]')[0] -- eller hva '-)
Avatar billede jamola Nybegynder
20. oktober 2003 - 11:50 #18
Tak for svarene. Det viste sig jo at være et interessant problem jeg stillede op. :-) jamola
Avatar billede olebole Juniormester
20. oktober 2003 - 12:00 #19
roenving >> Nej, et id må ikke indeholde [] - og du kan jo ikke med det kald bruge name-attributten  ;o)
Avatar billede roenving Novice
21. oktober 2003 - 01:20 #20
Tja, det var jo det, jeg nåede at tænke før jeg trukkede på u-et (i [alt]+u !-) så jeg fik tilføjelsen med ...
Avatar billede olebole Juniormester
21. oktober 2003 - 10:26 #21
;o)
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