- PR -

Javascriptで「半角/全角」キーを判断する方法について

1
投稿者投稿内容
もんも
常連さん
会議室デビュー日: 2002/10/01
投稿数: 24
投稿日時: 2005-08-25 21:50
もんもと申します。
現在javascriptでプログラムを組んでいるのですが、
javascriptのonkeydownで「半角/全角」キーを判断する方法が
分からず困っています。

●event.keyCodeで取得できる値
・onkeydownイベント内
「全角あ」→229
「半角/全角」→229
・onkeyupイベント内
「全角あ」→65
「半角/全角」→244 or 243

「全角あ」と「半角/全角」が同じキーコードになります。


●イベントが上がる順番
「全角あ」
onkeydown→onkeyup
「半角/全角」
onkeyup→onkeydown

イベント順番が「全角あ」と「半角/全角」で異なります。


上記を動作を確認後、「半角/全角」キーをonkeydownの中で
判断するサンプルを作成してみました。

------------------------
<html>
<body>

<input onkeydown="dokeydown();" onkeyup="dokeyup();">
<select></select>

<script>
function dokeydown(){
if(kanji){
kanji = false;
alert("「半角/全角」キーが押されました。");
}
}

var kanji = false;
function dokeyup(){
if(event.keyCode==243 || event.keyCode==244){
kanji = true;
}
}
</script>

</body>
</html>
-----------------------

このサンプルは動作させてみると「半角/全角」キーを判断しているようです。

しかしながら、以下のいずれかの場合で「半角/全角」キーを判断しません。

・一度selectにフォーカスを当て、INPUTにフォーカスを当てる。
 「半角/全角」キーを押下する。

・別なウィンドウ(他のアプリケーション)にフォーカスを当て、INPUTにフォーカスを当てる。
 「半角/全角」キーを押下する。

これらの場合にはonkeyupが発生せず、kanjiフラグがtrueになりません。
そのため、「半角/全角」キーを判定することができません。

Javascriptのonkeydownの中で「半角/全角」キーを判定する方法を
ご存知の方がいらっしゃいましたらご教授ください。

よろしくお願いします。
セイン
常連さん
会議室デビュー日: 2005/06/15
投稿数: 24
投稿日時: 2005-08-26 11:28
すいません。少し的はずれかもしれませんが、
IMEの制御をされたいのでしょうか?

もしそうならば下記がやつだつとは思うのですが…
http://www.futomi.com/lecture/javacss/ime.html

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformscontrolclassimemodetopic.asp
もんも
常連さん
会議室デビュー日: 2002/10/01
投稿数: 24
投稿日時: 2005-08-29 08:52
セインさん回答ありがとうございます。

やりたいことはIMEを制御したいわけではなく
onkeydownイベントの中で「半角/全角」キーを
判定する方法が知りたいのです。

onkeydownの中で処理を動かしているのですが、
「全角あ」キーの時は処理を動かしたい。
「半角/全角」キーの時は処理を動かしたくないので
「半角/全角」キーの判定を行いたいのです。

「半角/全角」キーの判定方法をご存知でしたら
ご教授ください。

よろしくお願いします。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2005-08-29 09:38
こんにちは。

先ず全角半角を判定して最終的に何をされたいのか見えてきません。

JavaScriptのコードはこれが全てですか?
もんも
常連さん
会議室デビュー日: 2002/10/01
投稿数: 24
投稿日時: 2005-08-29 19:25
単純にonkeydownの中で「半角/全角」キーの押下を判断したいだけなのですが、
IMEオンの場合に判断のやり方がわからなかったため質問させていただきました。
いろいろ調べていく中でWindowsXP+OfficeXPだと
「コントロールパネル」->「地域と言語のオプション」->「言語」タブ ->「詳細」ボタン->
「テキスト サービスと入力言語」->「詳細設定」タブ->「詳細なテキスト サービスをオフにする」
をチェックした場合としない場合でjavascriptのIMEオンの状態のonkeydown、onkeyupイベントの
発生の仕方が異なるようです。
このあたりも整理しないとちょっと先に進めないような気がしてきました。
もう少し自分で調べてみようと思います。

また次回、皆様にご教授いただくことがあるかとは思いますが、
その際はよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)