Avatar billede f2f4 Novice
28. oktober 2003 - 09:36 Der er 7 kommentarer og
1 løsning

Gennemløb af formfelter

Jeg har en dynamisk genereret html form med et variabelt antal radio-buttons (og text fields), disse er tilknyttet X onclick event’s der åbner/låser nogle text-felter.

På formens ’onload’ vil jeg gerne lede alle radio-buttons igennem og kalde de respektive onclick-evente! (Lidt teknisk baggrund: Det sker i en form der genereres ud fra en XML fil og et XSLT.)

Da jeg ikke ved hvor mange der er må jeg lede formens felter igennem, med fx. noget ala:

for(var i=1;i<=???;i++){
if eval(" form.radiobutton"+i+".checked”) {
... }
}

.. men hvad skal jeg gennemløbe (alle formens elementer? Hvordan?), og hvordan undgår jeg at der sker fejl hvis ’radiobutton+i’ ikke findes?

Jeg har læst i et andet spørgsmål at eval er langsom, man skal nok i stedet bruge noget med form.elements[’radiobutton’+i]

Kan nogle hjælpe mig på vej?

Tak for svar!
Avatar billede mm12010 Nybegynder
28. oktober 2003 - 09:43 #1
el=document.forms[0].elements;
for(i=0;i<el;i++){
  if(el.type=='radio'&&el.checked){
    //gør noget
    }
  }
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 09:44 #2
Øh, klikke på alle radiobuttons? Giver det mening? To radioknapper i samme gruppe
får så et klik hver i "tilfældig" rækkefølge.

Selvfølgelig kan man - men hvorfor?
Avatar billede f2f4 Novice
28. oktober 2003 - 10:01 #3
erikjacobsen:
Civilstand? Enlig / Gift / Samboende (3 radiobuttons)
- Er der klikker af i 'Enlig' skal ex. 'ægtefælles navn' disables!
Mit konkrete problem, ex.:
Er ejendommen en landbrugsejendom? Ja / Nej (hvis nej skal nogle felter låses) Nu er problemet (i XSLT) at jeg ikke ved hvor mange ejendomme der er (de behandles ens), men jeg skal 'sætte op' at hvis ejendom1 er en landbrugsejendom skal feltX til ejendom1 låses, hvis ejendom2 er ... osv.

LOogist set kunne dette løses på andre (måske beder) måder men jeg ønsker at have det på en form for at undgå flere 'langsomme' kald ned i en servlet!
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 10:19 #4
Ok, men hvor meget kender du til eksistensen af form-elementer. Lad mig gætte:

1) Du ved der et antal "Er ejendommen landbrugsejendom" - 0 til mange
2) De hedder noget genkendeligt "landbrug1", "landbrug2" ...
3) For "landbrug1" er det tilknyttede felter "landbrugfelta1", "landbrugfelta2"...
  der skal låses op eller i

Nogenlunde rigtigt?? ;)
Avatar billede erikjacobsen Ekspert
28. oktober 2003 - 10:19 #5
3) For "landbrug1" er det tilknyttede felter "landbrugfelta1", "landbrugfeltb1"...

(mente jeg vidst)
Avatar billede f2f4 Novice
28. oktober 2003 - 10:31 #6
erikjacobsen
ja lige præcis!
Avatar billede f2f4 Novice
28. oktober 2003 - 10:36 #7
.. og i øvrigt er dette er en træls (men alligevel sjov!!) opgave da javascript skrevet i en xslt fil er noget l...! (-; Da den prøver at tolke script koden!
Avatar billede f2f4 Novice
30. oktober 2003 - 18:40 #8
Ok tak! - med idéer fra nogle af ovenstående har jeg fået nedenstående til af virke. Men måske kan det gøres smartere!?

function AabnLaasSide2() {
  el=inputForm.elements;
  for(i=0;i<el.length;i++){
    if(el[i].type=='radio' && el[i].checked){
      navn=el[i].name;
      postnavn= navn.substring(navn.lastIndexOf("_")+1, navn.length);
      prenavn= navn.substring(0, navn.lastIndexOf("_"));

      if (prenavn == 'overtaget') {
        relem = inputForm.elements['overtaget_' + postnavn];
        if (relem[0].checked) {
          inputForm.elements['overtaget_dato_dag_' + postnavn].disabled=false;
          inputForm.elements['overtaget_dato_dag_' + postnavn].style.backgroundColor="#ffffff";
          inputForm.elements['overtaget_dato_maaned_' + postnavn].disabled=false;
          inputForm.elements['overtaget_dato_maaned_' + postnavn].style.backgroundColor="#ffffff";
        } else {
          inputForm.elements['overtaget_dato_dag_' + postnavn].disabled=true;
          inputForm.elements['overtaget_dato_dag_' + postnavn].style.backgroundColor="#eeeeee";
          inputForm.elements['overtaget_dato_maaned_' + postnavn].disabled=true;
          inputForm.elements['overtaget_dato_maaned_' + postnavn].style.backgroundColor="#eeeeee";
        }
      }
    }
  }
}
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