09. oktober 2008 - 20:02Der er
18 kommentarer og 1 løsning
checkboxes reagerer på brugerhandlinger
Hej Eksperter.
Jeg har en form, hvori der i hver row er 5 checkboxes og 2 textfelter. Lad os kalde checkboxene for hhv. ch1, ch2, ch3, ch4 og ch5. De 2 textboxe kalder vi for tx1 og tx2.
Nu er jeg ikke så ferm til Javascript, men jeg vil mene at det er muligt at påvirke enkelte checkboxes og textfelter udfra andre checkboxes.
Hvis f.eks. at ch1 vinges af, skal ch3 også automatisk vinges af. Hvis værdien af tx1 er 2 og ch2 er vinget af, skal ch4 automatisk vinges af.
- og alle de andre regler ... hvordan ser de ud? Hvad skal der ske med de andre checkboxe - og hvad skal der ske, hvis noget tekst bliver slettet i et felt - og hvad skal der ske, hvis brugeren selv fjerner et flueben?
Det lyder, somom der er en masse, som ikke er tænkt igennem ... i hvertfald hører vi ikke noget om tankerne =)
olebole - Det skal siges at jeg ikke ville udfolde hele viften, hvis jeg med det samme fik at vide at det ikke kunne lade sig gøre... :)
Som det er bygget op, er der som sagt 5 checkboxe og 2 textfelter i hver række. Disse rækker er der 18 stk af, hvilket jo må siges at være en del checkboxe og tekstfelter, men det er i en god mening, idet det er til et statistiksystem.
Javascript koden skal derfor indgå til alle 18 rækker, men jeg er (næsten) overbevist om at kan jeg få hjælp til at lave den første række, er resten ikke så svært.
Nå, til selve inputboksene... ALLE boxe er aktive, dog er der, som beskrevet tidligere, enkelte boxe som skal udføre handlinger for andre boxe. Bortset fra en checkbox, skal alle de automatiskudfyldte checkboxe kunne vinges fra igen.
Helt enkelt skal det enkelte linie være således:
Hvis tx1 = 2 og ch2 er vinget af skal tx2 være = 1 Hvis ch5 er vinget af skal ch4 også vinges af (ch4 skal være vinget af hvis ch5 er vinget af.)
Noget af en lang smøre - og ja, den kunne jeg have startet med... :D
Ovenstående virker fint, men kan man kode det sådan at den skriver værdien i den tekstboks, så snart man har vinget flubenet af, istedet for at man skal klikke i tekstfeltet før den skriver?
bare lidt urolig for, at med al den onchange kode der skal være, at det sløver siden...
Ok... jeg troede bare at jo mere kode browseren skulle cykle igennem, desto langsommere blev det... og ved tanken om ovenstående kode til 3 af boksene gange de 18 repititioner = rigtig meget kode == langsomt site...
Det er _yderst_ fornuftigt at tænke i de baner, men en event skal altid udløses, før den begynder at 'æde' af resourcerne, så lige dér er der ingen grund til frygt =)
"Ovenstående virker fint, men kan man kode det sådan at den skriver værdien i den tekstboks, så snart man har vinget flubenet af, istedet for at man skal klikke i tekstfeltet før den skriver?"
ja, du kan jo bare lave en onchange-event på den checkbox der så sætter tx1.value='2'
Hej roenving... Det lyder meget interessant det du foreslår... :) Måden det er opbygget på er som beskrevet tidligere med 2 tekstfelter og 5 checkboxe. Disse bliver så hevet igennem i php løkke, hvor de bliver duplikeret 18 gange. Faktisk hedder de forskellige bokse nogenlunde det samme. F.eks. hedder den ene checkbox <input type="checkbox" name="gir<?=$x?>" id="gir<?=$x?>"> denne kører så igennem løkken hvor det bliver til: <input type="checkbox" name="gir1" id="gir1"> ... <input type="checkbox" name="gir18" id="gir18">
Efter at have leget lidt med Splazz' kode, er det lykkes mig at få det til at virke efter hensigten. Problemet er derfor løst og der skal afleveres point. Tingene skal jo gøres rigtigt, og jeg skal give point til Splazz, men jeg valgte at benytte den kode på baggrund af oleboles information om hastighed af sitet ved brug af events.
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.