WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:キーボードのバックスペースキーを禁止

0:[投稿] のぐりん [MAIL] [2003/02/04 10:33 ][環境:IE5.5以上 Windows全般 IIS4.0以上、Windows NT4.0以上]

お世話になっております。のぐりんです。

IE上にて、キーボードのバックスペースキーを押すと、
「戻る」ボタンと同じ操作をしてしまいます。

今回のシステムでは、右クリックを禁止、メニューバーやツールバーの非表示をしていますが、
バックスペースキーを制御することが出来ません。

JavaScriptまたは、HTMLでバックスペースキーを制御することが出来ますか?(IE限定でいいです。)


1:[回答] ごだっち [MAIL] [2003/02/04 11:59 ]

こんな感じで良いでしょうか?

キーが押されたイベントを取得したら、キーコードが'0008'(BackSpaceキー)かどうかを比較して、合致していたら無効化。

これを当該ウィンドウのヘッド部に入れておくと、大丈夫かも。

<script language="javascript" type="text/javascript">
<!--
window.document.onkeydown = Function('if(event.keyCode == 0008) return false;');
//-->
</script>


2:[回答] 匿名万歳 [2003/02/04 12:15 ]

Alt押しながらカーソルの左を押しても「戻る」と同等の動きをしますが、その辺はよろしいのですか?


3:[完了] のぐりん [MAIL] [2003/02/04 12:52 ]

ごだっちさん、匿名万歳さんありがとうございます。

とりあえず、自力で調べながら、以下のソースで動作いたしました。
//キー押下時
window.document.onkeydown=onKeyDown;

//BackSpaceキー押下防止
function onKeyDown(e) {

    if (navigator.appName == "Microsoft Internet Explorer") {
        //テキストボックス、パスワードボックスは許す
        for (i = 0; i < document.all.tags("INPUT").length; i++) {
            if (document.all.tags("INPUT")(i).name == window.event.srcElement.name &&
                (document.all.tags("INPUT")(i).type == "text" || document.all.tags("INPUT")(i).type == "password") ){
                return true;
            }
        }
        //テキストエリアは許す
        for (i = 0; i < document.all.tags("TEXTAREA").length; i++) {
            if (document.all.tags("TEXTAREA")(i).name == window.event.srcElement.name){
                return true;
            }
        }
        if( event.keyCode == 8 ) {
            //alert("BackSpaseはダメ!");
            return false ;
        }
     } else
         if (navigator.appName == "Netscape") {
             if (e.which == 8) {
              return false;
          }
    }
}

ただし、ALT+←は、対応していません。
これに関しても、対応を検討します。
一応、完了とさせていただきます。


4:[完了] のぐりん [MAIL] [2003/02/11 15:20 ]

ALT+←や、テキストボックス、テキストエリアの
リードオンリーにも対応させました。

//キー押下時
window.document.onkeydown=onKeyDown;

//BackSpaceキー押下防止
function onKeyDown(e) {

    if (navigator.appName == "Microsoft Internet Explorer") {

        //ALT+←ダメ
        if( event.keyCode == 0x25 && event.altKey == true ) {
            //alert("ALT+←はダメ!");
            return false ;
        }
        //テキストボックス、パスワードボックスは許す
        for (i = 0; i < document.all.tags("INPUT").length; i++) {
            if (document.all.tags("INPUT")(i).name == window.event.srcElement.name &&
                (document.all.tags("INPUT")(i).type == "text" || document.all.tags("INPUT")(i).type == "password") &&
                 document.all.tags("INPUT")(i).readOnly == false){
                return true;
            }
        }
        //テキストエリアは許す
        for (i = 0; i < document.all.tags("TEXTAREA").length; i++) {
            if (document.all.tags("TEXTAREA")(i).name == window.event.srcElement.name &&
                document.all.tags("TEXTAREA")(i).readOnly == false){
                return true;
            }
        }
        //BackSpaceダメ
        if( event.keyCode == 8 ) {
            //alert("BackSpaseはダメ!");
            return false ;
        }
     } else
         if (navigator.appName == "Netscape") {
             if (e.which == 8) {
              return false;
          }
    }
}

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World