10. oktober 2004 - 21:12Der er
20 kommentarer og 1 løsning
Hjælp til onChange / onLoad
Hejsa eksperter,
jeg har et problem, som I garanteret kan løse...
Lidt simplificeret, så har jeg en formular med et inputfelt og en selectboks. Når brugeren taster noget i inputfeltet og forlader det, skifter selectboksen til værdien af det skrevne. Når brugeren vælger i selectboksen, hopper værdien over i inputfeltet. Ikke så mange ben i det...
Hvis brugeren ønsker at redigere en tidligere indtastet record, så placerer jeg uden problemer værdien i inputfeltet, men nu ønsker jeg, at selectboksen automatisk skifter - på samme måde, som hvis værdien var tastet manuelt af brugeren. Hvordan gør jeg det, uden at skulle ud i en masse overflødig kode?
Jeg troede, at jeg kunne fange en onChange-event, så når værdien af inputfeltet skifter, så kalder den selv det javascript, der skifter indholdet i selectboksen, men det lader til at være sværere end som så, når jeg udfylder det når siden loader.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Mine scripts har jeg lagt ud i en .js-fil, så den når aldrig til scriptet, når siden loader ... eller gør den? Der er jo ingen onChange, der kalder den?
Jeg er ingen nørd til javascript, men prøver at bruge min logiske sans. Værdien i input-feltet tildeler jeg med en variabel fra en include-fil, så syntaksen i min HTML-kode er
-- og iøvrigt er det ligegyldigt om et script ligger i en ekstern fil, det læses altsammen under opstarten, lidt forsinket, hvis man sætter defer på script-tagget, men det har du vel ikke ?-)
Nej, min form hedder noget andet - jeg har anonymiseret mine variabler, så betragt det som en vis grad af pseudokode. Hvis jeg mailer det direkte til dig, skal du nok få det råt for usødet, men jeg foretrækker at holde et figenblad over min kode, når den er offentligt tilgængelig :-)
Loades hele den eksterne script-fil hver gang? Så det vil sige, at hvis jeg samler hele sitets scripts i én fil for overskuelighedens skyld, så loader samtlige sider samtlige scripts? Det kan man da ikke kalde optimering af performance, men det var en afstikker fra spørgsmålet. Øhh, defer på script-tagget? Og det er?
Hvis onLoad kaldes, når hele siden er loadet, så burde dit første forslag virke, gjorde det ikke? Eller har jeg gjort noget forkert? Kan man sætte onLoad på et inputfelt?
*lol* -- har du da ikke tænkt dig at udsende dine sider ?-)
Ja, for de funktioner som findes i et eksternt script skal være til rådighed for hele siden, så derfor loader browseren det hele, hvilket dog først vil være et performance-mæssigt problem, hvis du har _mange_ hundrede kilobyte !-)
defer indsat i et script-tag betyder, at browseren ved, at indholdet ikke er direkte afviklelig script-kode, men funktioner, som den ikke behøver at skynde sig at loade, hvorfor den prioriterer resten af siden og loader pågældende script-bid eller -library parallelt ...
Ja, men jeg kan ikke se noget forkert !-)
-- og nej, onload kan kun sættes på tags, som indeholder en src, body (hele siden eller window.onload !-), et img- eller iframe-tag f.eks.
Jeg har lige prøvet at lave stave funktionsnavnet forkert i det kald, som du foreslog, så jeg burde have fået en javafejl, hvis det virkede efter hensigten?
Så overvejede jeg i et svagt øjeblik at flytte det ned som onLoad i <body>-taggen, men det er langtfra HVER gang, at jeg ønsker at checke samtlige felter, så det ville give en del overhead.
-- ideen kommer fra, at det er en ret sen javascript-version, som understøtter funktions-tildelinger, så ved at bruge en nutidig angivelse af indholdet, kunne det være, at det virkede !-)
-- og du kan jo prøve at sætte alerts inde i funktionen !-)
Nu er jeg blevet lidt klogere... det der ser ud til at forhindre, at jeg når frem til den alert, er indholdet i min <body>-tag. Hvis jeg udelader nedenstående onLad, så virker det upåklageligt... men hvad i nedenstående kan på nogen måde fornærme det andet kald?!? Er det frames, der driller?
Jeg SAGDE jo, at jeg ikke var særlig velbevandret i javascript, men jeg laver nok ikke dén fejl igen! ;-)
Tak for hjælpen!
Synes godt om
Ny brugerNybegynder
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.