Avatar billede radion Nybegynder
15. juni 2007 - 09:43 Der er 7 kommentarer og
1 løsning

focus er i et text felt!

Hej Eksperter

jeg håber I kan hjælpe, jeg søger et generelt script der kan fortælle om focus er i et input="text" / textarea felt, eller ej.

det jeg bruger det til, er at jeg skal have sat en variabel til false hvis fokus er på et textfield, og samme variabel skal være true når fokus ikke er i et textfield.

man kunne self. gøre:

<input type="text" onfocus="java script:useKeys=false;" onblur="java script:useKeys=true;" id="ehste">

men, jeg søger en generel formel, der kunne sættes ind i en header, så jeg  er fri for at skulle skrive onfocus, onblur ind i samtlige text felter?

kan det lade sig gøre?
Avatar billede roenving Novice
15. juni 2007 - 13:29 #1
Næh, men man kan jo indsætte ovenstående med en funktion:

<script type="text/javascript">
window.onload = function(){
  var inps = document.getElementsByTagName("input");
  for(i=0,im=inps.length;im>i;i++){
    if(inps[i].type == "text"){
      inps[i].onfocus = function(){useKeys = false};
      inps[i].onblur = function(){useKeys = true};
    }
  }
  var tas = document.getElementsByTagName("textarea");
  for(i=0,im=tas.length;im>i;i++){
    tas[i].onfocus = function(){useKeys = false};
    tas[i].onblur = function(){useKeys = true};
  }
}
</script>

-- jeg sprang lige over et lavt sted i gærdet, da man jo egentlig bør benytte attachEvent eller addEventListener efter hvilken event-model browseren bruger ...

-- og det er absolut utestet !-)
Avatar billede roenving Novice
15. juni 2007 - 13:30 #2
-- og der skal selvfølgelig oprettes en global variabel:

<script type="text/javascript">
var useKeys = true;//eller false afhængig af din måde at lave det på !-)
window.onload = function(){

...
Avatar billede radion Nybegynder
15. juni 2007 - 14:21 #3
nu er jeg usandsynligt meget newbie inden for javascript. hvorfor bør man bruge attachEvent eller  addEventListener????? det skulle gerne ende ud i noget kode der var funktionelt i alle browsere?
Avatar billede roenving Novice
15. juni 2007 - 14:41 #4
Ovenstående virker pt. i alle browsere, men skal ændres til en egentlig event-afhængig metode, hvis det skal virke i fremtidige browsere, der ikke understøtter den slags 'mærkværdigheder' ...

-- og det kommer til at blive noget i stil med:

  var tas = document.getElementsByTagName("textarea");
  if(document.addEventListener){
    for(i=0,im=tas.length;im>i;i++){
      tas[i].addEventListener("focus", disableKeys, true);
      tas[i].addEventListener("blur", allowKeys, true);
    }
  }else if(document.attachEvent){
    for(i=0,im=tas.length;im>i;i++){
      tas[i].attachEvent("onfocus", disableKeys);
      tas[i].attachEvent("onblur", allowKeys);
    }
  }else{
    for(i=0,im=tas.length;im>i;i++){
      tas[i].onfocus = disableKeys;
      tas[i].onblur = allowKeys;
    }
  }

...

function allowKeys(){useKeys = true}
function disableKeys(){useKeys = false}
Avatar billede radion Nybegynder
15. juni 2007 - 20:30 #5
fikst fikst, jeg prøver at arbejde med det :)=

kast en svar, så ryger der flæsk :)
Avatar billede roenving Novice
17. juni 2007 - 01:53 #6
Velbekomme '-)
Avatar billede roenving Novice
17. juni 2007 - 23:51 #7
-- og tak for point ;~}

-- og jeg kan ikke undgå at tænke på Tjenestens: "Flæsk er på vej" fra P3 !-)
Avatar billede radion Nybegynder
23. september 2007 - 01:02 #8
hmmm... jeg kan ikke få den til at fungere

(jeg prøver med den første du skrev )

bør
inps[i].onfocus = function(){useKeys = false};
ikke være
inps[i].onfocus = useKeys = false;

eller lign? hvad gør function(){....}
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