ESCキーの入力を検出するJavaScriptがあれば教えてください。


要するに実現したいのは、IEでテキストエリアに入力中に(IME確定後の)ESCで入力内容がクリアされてしまいますが、これを防ぎたいのです。ようは半角/全角キーの押し間違え防止対策です。(ESCはreset扱いのようですので)

ちなみにformタグでonResetイベントを発行しその中でconfirmすれば最悪カーソルのあるカレントの入力フィールド以外のクリアを(ワンクッションおくことで)防ぐことができますが、カレントのエリアは残念ながら消えてしまいます。

IME状態で消えてしまうのは仕方ないとしてIME確定後にカレントのフィールドも消さない方法があればそちらでも結構です。

IE使わないでFireFoxにしろとか、エディタに下書きしてからペーストすればとか、何か他のソフトをインストールさせて防ぐとか、常にctrl+Aとcせよとか、そういった類の回答は全く期待しておりません。

onkeypressなどでESCを検出させるなどの方法があれば、その方法を具体的にお願いします。あるいは逆にESCを押せなくする方法でもかまいません。
IE限定のイベントでも結構です。JavaScript識者の方、どうかご指南の程よろしくお願いします。

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:
  • 終了:2006/09/08 00:10:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:llusall No.1

回答回数505ベストアンサー獲得回数61

ポイント26pt

こちらでいかがでしょうか?

スクリプトを埋め込めば、ESCキーの機能を抑止できるかと思います。

<script Language="JavaScript">

<!--

//特定キーの機能抑止

function CtrlFnckey(evt) {

    if (document.all) {

        } else if (event.keyCode == 27) { // Esc

            return false;

        } else {

            return true;

        }

    }else{

        } else if (evt.keyCode == 27) { // Esc

            return false;

        } else {

            return true;

        }

    }

    return true;

}

// イベントの割付

document.onkeydown=CtrlFnckey;

// -->

</script>

※IE6とFireFox1.5で大丈夫だと思います。

id:kehi3

event.keyCode == 27なんてできたんですね。

ありがとうございました。

IE、FFでの検証も感謝します

2006/09/07 06:52:13

その他の回答2件)

id:llusall No.1

回答回数505ベストアンサー獲得回数61ここでベストアンサー

ポイント26pt

こちらでいかがでしょうか?

スクリプトを埋め込めば、ESCキーの機能を抑止できるかと思います。

<script Language="JavaScript">

<!--

//特定キーの機能抑止

function CtrlFnckey(evt) {

    if (document.all) {

        } else if (event.keyCode == 27) { // Esc

            return false;

        } else {

            return true;

        }

    }else{

        } else if (evt.keyCode == 27) { // Esc

            return false;

        } else {

            return true;

        }

    }

    return true;

}

// イベントの割付

document.onkeydown=CtrlFnckey;

// -->

</script>

※IE6とFireFox1.5で大丈夫だと思います。

id:kehi3

event.keyCode == 27なんてできたんですね。

ありがとうございました。

IE、FFでの検証も感謝します

2006/09/07 06:52:13
id:takemori No.2

回答回数29ベストアンサー獲得回数2

ポイント27pt

 //--押されたキ-の文字を返す

 function getKEYCODE(e){

  if(document.all)

   return event.keyCode

  else if(document.getElementById)

   return (e.keyCode!=0)?e.keyCode:e.charCode

  else if(document.layers)

   return e.which

 }

 //--キーeventをセットする

 document.onkeydown = keypress

 if(document.layers)

  document.captureEvents(Event.KEYDOWN)

function keypress(e){

  if(getKEYCODE(e)==27) return false;

  return;

}

調べてみたらこれでうまくいきました

http://d.hatena.ne.jp/

id:kehi3

検証感謝です。

これでできそうです。エレガント。

2006/09/07 06:53:00
id:irhnhhtn No.3

回答回数15ベストアンサー獲得回数0

ポイント27pt

URLはダミーです。

http://q.hatena.ne.jp/

以下のjavascriptに記述すれば、textarea内のescキー入力は無視されます。

if( document.all ){

document.onkeydown = keyEventIE;

}

function keyEventIE(){

if((window.event.keyCode == 27)&&(document.activeElement.type == "textarea" )) return false;

}

id:kehi3

なるほど、エレメントタイプなんて取れるんですね。勉強になりました。

2006/09/07 06:53:46

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません