08. august 2001 - 16:11Der er
15 kommentarer og 2 løsninger
set focus på inputelement
Jeg har et text inputelement, som jeg ønsker at sætte focus på, såfremt elementet modtager en onBlur event. Dette virker ikke i Netscape6. Kan nogen fortælle, hvad der skal ændres?
<script> function doFocus(elem){ elem.focus(); } </script>
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
IE er som regel bedøvende ligeglad med at holde syntaksen. IE 4.0 bruger document.all - Netscape 4.x bruge document layers og Netscape 6.0 bruger document.getElementById - Det samme understøttes af IE 5.5 som dog også forstår document.all og IE´s sløsede kode.
I mit eksempel har jeg jo valgt at sende hele input elementet med op i funktionen doFocus(), hvorefter jeg manipulerer det medsendte input element.
Dit forslag (brug af metoden getElementById) vil betyde, at jeg i min funktion doFocus() skal finde input elementet vha. dets id property. Jeg sender således inputelementets id med op i funktionen, i funktionen finder jeg inputelementet vha. id\'et og sætter focus på elementet.
Dette virker heller ikke i NS6. Desværre :-(
Nedenfor ses den ændrede kode:
<script> function doFocus(elemId){ document.getElementById(elemId).focus(); } </script>
hmmm..... mener du, at jeg skal bruge \'kantede\' paranteser i stedet for \'bløde\'? Det er da forkert syntaks. Eller mener du, at jeg skal tilgå elementet som et associativt array? I givet fald, ville syntaksen da være document.formnavn[elementnr].focus(), men dette virker nu heller ikke. Jeg tror ikke, at problemet er at få fat på selve inputelementet. Det er jo lykkedes.
skal jeg returnere \'false\' et sted, ligesom ved brug af onSubmit, hvor formen ikke submittes, hvis en funktion returnerer false til eventhandleren? Kan onBlur overhovedet modtage true eller false? Ikke så vidt jeg ved, og jeg har også prøvet uden held...... :-(
Jo, men som jeg lige skrev, så har jeg godt nok fat i inputobjektet. Kan bare ikke sætte focus på det. document.forms[elemennr].focus() virker heller ikke. Og vi taler jo NS6 !
Jeg har forsøgt mig med den mere simple onBlur=\"this.focus();\" og den virker i NS 4.x, men ikke i Ns 6.0 - Har så lige tjekket op på at den skulle kunn gøre det og det kan den, menhvordan er et godt spørgsmål. Finden lige en rigtig NS Expert.
Nb: når først den \'grab focus\' funktion virker har du et monumentalt uælkkert vindue der lægger sig ovenpå alting. Er du sikker på det er ønskværdigt?
mvh JakobA
Nikolajdu >> tak for tippet :-) og tillykke med pladsen :-))
Hej jakoba. Tak for dit indlæg. Ja....det ser ud til UDELUKKENDE at være et spørgsmål om timing. Selv med en tidsforskydelse på blot 1ms virker det i NS6. Du skriver desuden, at inputelementet SKAL adresseres via formID. Dette er dog ikke nødvendigt (se doFocusAlternativ()). Man kan altså også tilgå inputelementet direkte via dens egen id-attribut. Nedenfor er koden barberet ned til et minimum.
....men, men, men: Hvordan er du dog kommet på, at det kunne have noget med timing at gøre???
Jeg har imidlertid ofte problemer med crossbrowser funktionalitet, hvor jeg ikke aner, hvad jeg skal stille op med NS6. Har du nogle specielt gode links til steder, der omhandler NS6\'s spidsfindigheder. Det er jo ikke altid nok blot at overholde DOM1. Det er dette spørgsmål/svar jo et godt eksempel på.
nikolajdu får lige en lille bid af kagen for sit engagement :-)
Tak begge to!!!
_____________________________________
<script> function doFocus(){ document.forms[0].elements[0].focus(); }
function doFocusAlternativ(){ document.getElementById(\'minInput\').focus(); } </script>
Takker. jep, getElementById kan, men kun i DOM-brovsere. IE4 & NS4.7- skal have den anden vej. NS6 er normalt helt DOM så den burde ikke vær det store problem.
Men hvordan hulen er du kommet på, at det kunne have noget med timing at gøre??? Kunne du give mig et tip til, hvordan du kom ind på det spor? Det havde jeg aldrig selv resonneret mig frem til.....
Fordi jeg har bemærket at IE og NS håndterer paralelle scripts forskelligt. IE kører timesliced. NS bruger kooperativ schedulering. Begge metoder har fordele og bagdele. I en situation som her hvor et klik (der sætter fokus der der klikkes) skal sætte fokus et andet sted er det mere end sædvanlig nødvendigt at have orden i sekvensen af ting der sker, så jeg prøvede.
mvh JakobA
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.