Avatar billede farouche Nybegynder
28. juni 2005 - 10:50 Der er 11 kommentarer og
1 løsning

Returnere om element i focus er Button

Hej der

Jeg har brug for en lille function der kan returnere hvorvidt det element der har focus på min page er af typen Input Button eller Input Submit, er der en eller andet der kan hælde noget sådant ud af ærmet ??

På forhånd tak
Avatar billede roenving Novice
28. juni 2005 - 11:08 #1
Hvad skal du bruge det til, for hvis det er knapper, som er i fokus trykker man vel på dem, og så kan man vel ligesågodt lave noget onclick ?-)
Avatar billede farouche Nybegynder
28. juni 2005 - 11:11 #2
Jeps, det er lidt specielt. Jeg har lavet noget script halløj der disabler Enter tasten på mine forms, ellers har den det med at hoppe ud af siden (ASPX).

Dette virker glimrende, men jeg vil gerne ha' det disable script til at springe knapper over hvis du forstår.

Nu har jeg følgende på min Body's onKeyPress:

if (window.event.keyCode == 13) event.returnValue=false;
Avatar billede farouche Nybegynder
28. juni 2005 - 11:13 #3
det skulle så gerne være noget i denne stil.

if (window.event.keyCode == 13) & (! focusedElmIsButton() == true) event.returnValue=false;
Avatar billede roenving Novice
28. juni 2005 - 11:28 #4
Hvad med at sætte værdien onfocus på knapper og slette den onblur ?-)

<script type="text/javascript">var focusedElmIsButton = false;</script>

<input type="submit" ... onfocus="focusedElmIsButton=true;" onblur="focusedElmIsButton=false;">

<button ... onfocus="focusedElmIsButton=true;" onblur="focusedElmIsButton=false;">Knap</button>

-- og så er det forøvrigt at gå over åen efter vand at sammenligne en sandhedsværdi, f.eks.

if (window.event.keyCode == 13 && !focusedElmIsButton) event.returnValue=false;
Avatar billede farouche Nybegynder
28. juni 2005 - 11:32 #5
Jo det var da en mulighed. Det er dog ikke så anvendeligt da det kræver at man skal ind og hardcode på alle button/submit elementer.
Avatar billede roenving Novice
28. juni 2005 - 11:38 #6
Njah, det kan man jo gøre onload ...

-- altså bare loope igennem alle form-elementer, checke om deres type er submit, image eller button, og så sætte funktionerne på, hvis det er !-)
Avatar billede farouche Nybegynder
28. juni 2005 - 11:40 #7
Mjoeeehh, det ville bare være lettere hvis man kunne spørge direkte på det element der har focus :)
Avatar billede olebole Juniormester
28. juni 2005 - 12:17 #8
<ole>

- og skal man til Paris, ville det være lettere, om man selv kunne flyve. Det kan mennesket bare ikke - og så finder vi en anden løsning  ;o)

Der findes ikke en standardiseret metode til at får returneret det element, der har fokus - så roenvings forslag er et rigtig godt bud  :)

/mvh
</bole>
Avatar billede farouche Nybegynder
28. juni 2005 - 12:37 #9
Så må jeg jo se om jeg kan få det kapslet ind i noget pæn kode så ;o)
Avatar billede roenving Novice
28. juni 2005 - 12:43 #10
F.eks.

<script type="text/javascript">
window.onload = function(){
  var f = document.forms,elms;
  for(i=0;i<f.length;i++){
    elms = f[i].elements;
    for(j=0;j<elms.length;j++){
      if(elms[j].type == 'submit' || elms[j].type == 'image' || elms[j].type == 'button'){
        elms[j].onblur = function(){focusedElmIsButton=false;};
        elms[j].onfocus = function(){focusedElmIsButton=true;};
      }
    }
  }
}
</script>
Avatar billede farouche Nybegynder
07. juli 2005 - 10:07 #11
Hej roenving, vil du ikke ha' points ;)
Avatar billede roenving Novice
07. juli 2005 - 11:07 #12
Velbekomme '-)
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