Avatar billede 13thsky Nybegynder
16. april 2003 - 10:41 Der er 18 kommentarer og
1 løsning

Tilgå textfelt

Hej

Har følgende problem. Jeg skal via et javascript ha' tilgang til et textfelt i et HTML doc hvor jeg dynamisk navngiver hvert felt fx.

1Reviewer1
1Reviewer2
1Reviewer3
osv.

Jeg skal nu i et javascript ha fat i disse felter så jeg kan validere værdien af dem:

count = form.hiddencount.value; // Henter antallet af felter ind i en variabel
 
for (k=1; k<=count; k++)
{
    name = "1Reviewer"+k;
    if (form.name.value == "")
    {
    alert("FEJL!!!");
    return (false);
    }
}

Men som i nok kan regne ud virker det ik, da den tar "name" som et felt i HTML doc'et istedet for selve variablen. Hvilket betyder den ik leder efter et felt som hedder "1Reviewer1" .
Avatar billede iver25 Nybegynder
16. april 2003 - 10:44 #1
name = eval("1Reviewer"+k);
Avatar billede 13thsky Nybegynder
16. april 2003 - 10:48 #2
for (k=1; k<=count; k++)
{
    name = eval("1Reviewer"+k);
    if (form.name.value == "")
    {
    alert("FEJL!!!");
    return (false);

    }

Det virker heller ik.... den forstår stadig ik at name er en variabel og ik et felt
Avatar billede bearhugx Nybegynder
16. april 2003 - 10:58 #3
du skriver
for (k=1; k<=count; k++)
{
    name = "1Reviewer"+k;
    if (form.["+name+"].value == "")
    {
    alert("FEJL!!!");
    return (false);
    }
}
Avatar billede 13thsky Nybegynder
16. april 2003 - 11:12 #4
Det virker heller ikk... Please help!!!
Avatar billede olebole Juniormester
16. april 2003 - 14:26 #5
<ole>

Du må lægge en URL til siden. Det, du skriver i eksemplet er 'helt pløre'  :)

/mvh
</bole>
Avatar billede bearhugx Nybegynder
16. april 2003 - 15:15 #6
Jeg retter lige mig selv...
du skal bruge

for (k=1; k<=count; k++) {
  name = "1Reviewer"+k;
  if (form[name].value == "") {
    alert("FEJL!!!");
    return (false);
  }
}

/Søren
Avatar billede olebole Juniormester
16. april 2003 - 15:37 #7
Det hjælper måske, Søren. Men meget sandsynligt ikke ... det vil kræve, vi kan se koden at komme med et bud, der virker  :)
Hvad indeholder 'form', f.eks?
Og, hvad betyder: "... hvor jeg dynamisk navngiver hvert felt"?
Har de fået et name eller et id?

Gode spørgsmål, det ville være rart at få opklaret med noget kode.
Avatar billede bearhugx Nybegynder
16. april 2003 - 15:42 #8
ole >> måske - og måske ikke --- Hvad jeg har forstået på teksten er at der åbenbart skulle være en form , som i js har fået det briliante variabel-navn "form" [sic!] ... Derudover også, at der åbenbart skulle være nogle tekstfelter som hedder
  1Reviewer# , hvor # kan være fra 1 til count

Lige præcis hvor den "dynamiske navngivning" kommer ind henne ved jeg ikke - derimod ved jeg at ovenstående virker, både hvis der er brugt name="1Reviewer1" og id="1Reviewer1"... så hvis jeg gætter rigtigt, så er min kode i 15:15 den, som han skal bruge...

Men jeg er da også interesseret i at se noget mere kode --- Vi er vel alle nysgerrige :-))
/Søren
Avatar billede 13thsky Nybegynder
16. april 2003 - 17:01 #9
hej...
I har vist fat i det rigtige.
Formen hedder form (yep genialt(c;) og tekstfeltet hedder 1Reviewer#... hvor # kan være fra 1 til count. (Det er det jeg mener med at tekstfeltet er navngivet dynamisk).
Men det virker stadig ikke?......

13th Sky
Avatar billede 13thsky Nybegynder
16. april 2003 - 17:06 #10
tekstfelterne:
name="1reviewer<%nogetAspKodeSomGiverEtTal%>
Avatar billede bearhugx Nybegynder
16. april 2003 - 17:08 #11
du mener vel
name="1reviewer<%=nogetAspKodeSomGiverEtTal%>"
Avatar billede 13thsky Nybegynder
16. april 2003 - 17:10 #12
Ja netop, det gik vist lidt hurtigt (c:
Avatar billede olebole Juniormester
16. april 2003 - 19:20 #13
Kom nu med en URL, hvis du ønsker hjælp
Avatar billede Slettet bruger
19. april 2003 - 10:33 #14
JavaScript har meget svært ved at håndtere elementer, hvis navne eller id'er starter med tal. Og det er også forbudt iflg. HTML-standarden.
Men smid nu det link.
Avatar billede 13thsky Nybegynder
22. april 2003 - 20:39 #15
Hej igen..
Har lige holdt lidt ferie, men løsninge som Søren skrev, virkede:

//Start
Jeg retter lige mig selv...
du skal bruge

for (k=1; k<=count; k++) {
  name = "1Reviewer"+k;
  if (form[name].value == "") {
    alert("FEJL!!!");
    return (false);
  }
}

/Søren
//Slut
Avatar billede Slettet bruger
22. april 2003 - 20:44 #16
Dog er det forkert.
Avatar billede bearhugx Nybegynder
23. april 2003 - 00:48 #17
phoenixv >> ??? hvad er der forkert i det ?
Avatar billede olebole Juniormester
23. april 2003 - 00:57 #18
Hvis 'form' (i øvrigt et dårligt valgt navn til variablen) refererer til formen, skal der stå:
  if (form.elements[name].value=="")
Her er 'name' i øvrigt også et meget dårligt valg til et variabel-navn. Man skal passe på ikke at vælge et navn, som bruges til andet - og som JavaScript kan misforstå.

Desuden kan et name eller id ikke starte med et tal i HTML. Det skal starte med et bogstav. '1Reviewer0' er med andre ord 'ulovligt'  :)
/mvh
Avatar billede Slettet bruger
23. april 2003 - 15:05 #19
Det var lige det, jeg skulle til at sige! :)
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporterelever til Lokal IT på Aalborg Kaserne

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Capgemini Danmark A/S

Java Engineer