webForumDet fria alternativet
Logga in / Bli medlem

Händelse vid tabb-tryckning?

JavaScript

3 svar · 393 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#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?

Medlem sedan sep. 2005673 inlägg
#2

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

Medlem sedan jan. 2002341 inlägg
#3

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

Medlem sedan aug. 20039 340 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">
255 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)