webForumDet fria alternativet

Händelse vid tabb-tryckning?

3 svar · 393 visningar · startad av inspiro

inspiroMedlem sedan sep. 2005673 inlägg
#1

Vid en knapptryckning så kan man ju fånga upp ett event med event.keyCode men detta fungerar inte med tabb. Någon som vet hur man kan sätta en händelse på en tabb-tryckning?

inspiroMedlem sedan sep. 2005673 inlägg
#2

Glömde, skulle vilja ha detta vid onkeyUP men det kanske är det som är problemet...

preyMedlem sedan jan. 2002341 inlägg
#3

du kan kanske använda onblur() + lite trixande?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Det funkar visst med tab, däremot så förflyttar normalt tab fokus, vilket gör att keyup sker i ett annat element. Detta exempel illustrerar problemet:

<script type="text/javascript">
window.onload=function(){
	with(document.getElementById("foo2")){
		onkeyup=function(e){
			var e = window.event;

			if (e.keyCode==9)
				alert("Fångade tab i onkeyup!\n" + e.srcElement.id);
		}
	}
}
</script>
...
<input id="foo1">
<input id="foo2">

Placera fokus i första rutan och tryck tab. Du hamnar då i den andra trutan som tar emot keyup.
NB: Detta exempel är specialgjort för IE, som verkar ha mest problem med detta.

Lösningen då? Om du inte tillåter webbläsaren att uppfatta när tab trycks ner så flyttar den inte fokus. Detta gör du genom att fånga onkeydown och köra return false om tangenten som tryckts ner är tab.

<script type="text/javascript">
window.onload=function(){
	with(document.getElementById("foo")){
		onkeydown=function(e){
			var e = window.event || e;

			if (e.keyCode==9)
				return false;
		},
		onkeyup=function(e){
			var e = window.event || e;

			if (e.keyCode==9 && !e.ctrlKey)
			/* 9 är keyCode för tab.
			&& !e.ctrlKey gör att koden har hövligheten
			att inte motverka byte av flikar. */
				alert("Fångade tab i onkeyup!");
		}
	}
}
</script>
...
<input id="foo">
124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)