- ベストアンサー
Tabキーのキャンセル
- IEでは上手く動いてますが、Netscape6以降でTabのキャンセルは指定できるのでしょうか?
- とりあえず、以下のコードを試してみてください。
- 必要なイベント処理を追加し、Tabキーの処理をキャンセルすることができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
後述のような感じにしたら動きました。(N7で確認) なぜKusukiさんのコードで期待通り動かないのかは、Netscapeのリファレンスを調べてもよく分かりませんでした。 # JavaScript 1.3 Client-Side Guide (Chapter 10 Handling Events) http://devedge.netscape.com/library/manuals/2000/javascript/1.3/guide/evnt.html # JavaScript 1.3 Client-Side Reference (Chapter 3 Event Handlers) http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/handlers.html ---------------------------------------------- function document_onLoad() { // IE 4以降の場合 ... snip ... // N6,7の場合 if (isN6) { window.onkeypress = document_onKeyPressN6; // KerPress } } /// tabキーが入力されたときのイベント処理(IE用) ... snip ... /// tabキーが入力されたときのイベント処理(NN用) function document_onKeyPressN6(evt) { var keyCode = evt.which; if (keyCode == 0) // KeyPressのときはなぜか0 { // 本来のtabの処理をキャンセルする。 // evt.returnValue = false; // なぜか効かない // evt.cancelBubble = true; // なぜか効かない return false; // 必要 } return true; // なくてもOK } ---------------------------------------------- tabだけでなくファンクションキー等も無効(KeyCode==0)になってしまいます。何らかの都合で厳密にtabだけとするには、KeyDownの方で小細工が必要かも知れません。
お礼
mrumesukeさん、ありがとうございます!! 「TABキーはKeyDow」と思い込んでしまっていて、 KeyPressにまで気が回りませんでした。 それにしても何故あの2つの指定は効かないのかしら…。 関数の方に組み込むにあたって、 F1キーにはNetScapeのヘルプが割付けられていますので、 KeyDownでフラグを持たせて判定するようにしました。 リファレンス…が、頑張って辞書と睨めっこしながら勉強してみます…。 本当にありがとうございました!!