JavaScriptリスニングtextareaのキー
1223 ワード
異なるブラウザでのイベントリスニングメカニズムは、onKeyPressイベントを例に挙げて異なります.
textareaがあり、
常にonKeyPress="keypress();"を定義し、以下の方法を定義します.
実際にはfirefoxでは無効です.
では、次のように変更します.
onKeyPress="keypress(event);"
やはり問題があり、kを押すとIEで107、FFで0となる.
keyCodeをcharCodeに変更してみます.
IEはundefined、FFは107
判断できるかもしれない
しかし、結合キーがあれば、この方法もだめです.
Ctrl+kを押すと、
IEではkeyCodeは11、charCodeはundefined
FFではkeyCodeが0、charCodeが107
ここで私が使っている方法はJQueryです.
ここで使用するwhichはIEでもFFでもシングルボタンでもコンビネーションキーでも107の値です
次にStringを使用する.fromCharCode(k)では、押した値を取り出すことができます.
textareaがあり、
<textarea id="text"></textarea>
常にonKeyPress="keypress();"を定義し、以下の方法を定義します.
var keypress = function(){
var k = window.event.keyCode;
}
実際にはfirefoxでは無効です.
では、次のように変更します.
onKeyPress="keypress(event);"
var keypress = function(event){
var k = event.keyCode;
}
やはり問題があり、kを押すとIEで107、FFで0となる.
keyCodeをcharCodeに変更してみます.
var k = event.charCode;
IEはundefined、FFは107
判断できるかもしれない
if( IE)
var k = event.keyCode;
else if( FF)
var k = event.charCode;
しかし、結合キーがあれば、この方法もだめです.
Ctrl+kを押すと、
IEではkeyCodeは11、charCodeはundefined
FFではkeyCodeが0、charCodeが107
ここで私が使っている方法はJQueryです.
$("#text").bind("keyPress",function(event){
var k = event.which;
});
ここで使用するwhichはIEでもFFでもシングルボタンでもコンビネーションキーでも107の値です
次にStringを使用する.fromCharCode(k)では、押した値を取り出すことができます.