人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

blur イベントが TAB キーによって発生したのか否かを JavaScript で捕らえる方法はありますでしょうか?
ブラウザを限定する必要があれば IE6/7 優先でお願いします。また、 prototype.js の有無は問いません。

●質問者: kamiochiai
●カテゴリ:ウェブ制作
✍キーワード:Blur IE6 JavaScript prototype.js イベント
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

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 キーの遷移先を変えるというインターフェースを作ろうと思っていました。

この方法ですんなり書けそうです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ