※ ChatGPTを利用し、要約された質問です(原文:JavaSc「-」を入力して「-」を表示しないとは)
JavaScriptでハイフンの入力を表示しない方法
このQ&Aのポイント
JavaScriptを使用してハイフンの入力を表示しない方法について説明します。
特定のキー入力に対して文字の表示を制御するJavaScriptプログラムを作成しました。
ハイフンの入力に関してはキーコードの変換を行うことで対応しましたが、特定の環境ではハイフンキーのコードが正しく発生しない場合があります。
JavaSc「-」を入力して「-」を表示しないとは
document.body.onkeydown=pressKey;
function pressKey(e)
{ keyNum=e.keyCode;
if(keyNum>=65 && keyNum<=90){ keyNum=keyNum+32;}
keyChar=String.fromCharCode(keyNum);
document.getElementById("area").innerHTML=keyChar;
}
<div id="area"></div>
HTML、JavaScriptのこんな感じのプログラムで
「a」を入力するとキーコードが発生するので
(ただし、ローマ字は大文字の「A」がヒットするので)
拾って(大文字なら小文字に変換する)
文字に変換して <div id="area"></div> の内容として
タイプするとリアクションでその場で表示できます。
「a」と打つなら「a」が現れる仕掛けです。
同じことがハイフン入力でできません。
(ノートPC使用、「0」の隣。)
キーコードをアラート表示すると189でした。
これはアスキー文字コード128以上の一覧にあって
文字としては1文字で1/2を表示するというものでした。
タイピングソフトを自作してこれに気付きました。
ハイフン入力にその表示が正常にできないということは
このままではお題に伸ばし棒入りの文章が使えません。
英文例題に伸ばし棒(半角ハイフン、コードは45)があっても
入力はコード189を発生するので一致判定ができません。
というか、入力動作で
if(keyNum==189){ keyNum=45;}
ハイフンのコード45に修正する作業をわざわざ差し込みました。
動作的にはこの対応で完成させたのですが、
ハイフンを入力したらハイフンキーのコード45を発生せずに
他のコードの発生させる機種は、
この仕掛けに何の意味やメリットがあるのか思い当たりません。
設定異常の症状でしょうか?
お礼
私が参照した教本では、機能が「どんなコード規格でやるものなのか」 説明はありませんでした。 キーコードがアスキーコードとどう違うものなのか わかっていないと手ごわかったです。 なかなかたどり着けなかった情報でした。 非常に助かります。すっきりしました。 ありがとうございました。