Avatar billede eky Nybegynder
23. september 2004 - 10:14 Der er 1 kommentar og
1 løsning

Test om felt er synligt

Hvordan tester man om et felt er synligt på skærmen?

Jeg har et inputfelt, der ligger inde i et DIV tag. DIV-tag'et kan jeg lave expand/collapse på med style.display:block/none.

Jeg vil gerne ha' mulighed for at sætte focus i inputfeltet. Hvis DIV-tag'et er collapsed, skal det expandes først, da man ellers får en scriptfejl.

I IE kan jeg lave
try {
document.forms[0].inputfelt.focus();
} catch (e){
expand('DIV-tag');
document.forms[0].inputfelt.focus();
}
men det virker ikke i Mozilla, da man ikke får en scriptfejl, hvis man sætter fokus på et felt der ikke kan ses.

Jeg kan heller ikke altid expande DIV-tag'et, da jeg har mange, og ikke ved hvilket det er, der skal expandes.
Avatar billede roenving Novice
23. september 2004 - 12:37 #1
Hvordan ved du så, at det er det bestemte input-felt (der må være en sammenhæng mellem den handling, som udløser fokus og input-feltet !-)
Avatar billede eky Nybegynder
23. september 2004 - 13:39 #2
Navnet på inputfeltet får jeg fra en mainframe, som jeg snakker med. Jeg kunne selvfølgelig teste på feltnavnet, og så expande ud fra det, men jeg vil gerne gøre koden så generel som muligt.

Jeg har løst problemet på flg. måde
function setFokus(fejlfelt) {
//Hent fejlende objekt
obj = document.getElementById(fejlfelt);
//Hop op gennem DOM træet indtil BODY-tag findes
while(obj.parentNode.nodeName != 'BODY') {
  if(obj.parentNode.style.display == 'none') {
  obj.parentNode.style.display = 'block';
  }
  obj = obj.parentNode;
}
document.forms[0][fejlfelt].focus();
}
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