要するに実現したいのは、IEでテキストエリアに入力中に(IME確定後の)ESCで入力内容がクリアされてしまいますが、これを防ぎたいのです。ようは半角/全角キーの押し間違え防止対策です。(ESCはreset扱いのようですので)
ちなみにformタグでonResetイベントを発行しその中でconfirmすれば最悪カーソルのあるカレントの入力フィールド以外のクリアを(ワンクッションおくことで)防ぐことができますが、カレントのエリアは残念ながら消えてしまいます。
IME状態で消えてしまうのは仕方ないとしてIME確定後にカレントのフィールドも消さない方法があればそちらでも結構です。
IE使わないでFireFoxにしろとか、エディタに下書きしてからペーストすればとか、何か他のソフトをインストールさせて防ぐとか、常にctrl+Aとcせよとか、そういった類の回答は全く期待しておりません。
onkeypressなどでESCを検出させるなどの方法があれば、その方法を具体的にお願いします。あるいは逆にESCを押せなくする方法でもかまいません。
IE限定のイベントでも結構です。JavaScript識者の方、どうかご指南の程よろしくお願いします。
こちらでいかがでしょうか?
スクリプトを埋め込めば、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で大丈夫だと思います。
こちらでいかがでしょうか?
スクリプトを埋め込めば、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で大丈夫だと思います。
event.keyCode == 27なんてできたんですね。
ありがとうございました。
IE、FFでの検証も感謝します
//--押されたキ-の文字を返す
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;
}
調べてみたらこれでうまくいきました
検証感謝です。
これでできそうです。エレガント。
URLはダミーです。
以下のjavascriptに記述すれば、textarea内のescキー入力は無視されます。
if( document.all ){
document.onkeydown = keyEventIE;
}
function keyEventIE(){
if((window.event.keyCode == 27)&&(document.activeElement.type == "textarea" )) return false;
}
なるほど、エレメントタイプなんて取れるんですね。勉強になりました。
event.keyCode == 27なんてできたんですね。
ありがとうございました。
IE、FFでの検証も感謝します