▽1
●
susie-t ●100ポイント ![]() |
blurイベント単体で捕らえるのはたぶん無理なので、onkeydownイベントで直前のキーコードを保持しておき、blurイベントでそれがTAB(=9)かどうかを判断するという方法が考えられます。
【例】 <html> <head> <title></title> <script> <!-- function test(id){ var elem = document.getElementById(id); var lastCode = null; elem.onblur = function(event){ if(lastCode == 9){ alert("TABによりフォーカスが外れました") } lastCode = null; }; elem.onkeydown = function(event){ event = event || window.event; lastCode = event.keyCode || event.which; }; elem.onkeyup = function(event){ lastCode = null; }; } window.onload = function(){ test("input1"); test("input2"); } //--> </script> </head> <body> <input type="text" id="input1"/> <input type="text" id="input2"/> </body> </html>
上記の関数testに入力要素のIDを指定して実行すると、onkeydown、onblur、onkeyupイベントにそれぞれ関数を指定します。入力要素からTABで遷移するとalertを表示します。マウスで遷移した場合は表示しません。WinXP+IE、Firefoxで確認しました。
参考になれば幸いです。
やはり keyCode を捕らえるしかないのですね…本当は手抜き方法があるんではと思っていたのですが、これで疑念が晴れました。
ありがとうございます!
目的としては TEXTAREA の内容に応じて、 TAB キーの遷移先を変えるというインターフェースを作ろうと思っていました。
この方法ですんなり書けそうです。