• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaSc「-」を入力して「-」を表示しないとは)

JavaScriptでハイフンの入力を表示しない方法

このQ&Aのポイント
  • JavaScriptを使用してハイフンの入力を表示しない方法について説明します。
  • 特定のキー入力に対して文字の表示を制御するJavaScriptプログラムを作成しました。
  • ハイフンの入力に関してはキーコードの変換を行うことで対応しましたが、特定の環境ではハイフンキーのコードが正しく発生しない場合があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>設定異常の症状でしょうか? javascriptのonkeydownは押されたキーの「キー番号(アスキーコードとは異なるコード)」をkeyCodeに返す仕様になっています。 この「キー番号」は、フルキーボード側の0~9、A~Zのキーについて、0~9、A~Zのアスキーコードと同じ数値になるようにキー番号を合わせてあります(番号をアスキーコードに似せてあるだけで、アスキーコードが返されている訳ではない事に注意すること) それ以外のキーは「アスキーコードと異なるコード」が返って来ます。 例えば、テンキーの「0」(ゼロ)は96、フルキーの「0」(ゼロ)は64を返すようになっています。 例えば、テンキーの「-」(マイナス)は109、フルキーの「-」(マイナス)は189を返すようになっています。 この時「=」(SHIFT押しながら「ー」キー)は「-」キーと同じ番号の189になります。 ですので、onkeydownは「-」と「=」を区別出来ません。どちらも「189」が返されます。 「押したキー入力を、アスキーコードで知りたい」と言う場合は「onkeypress」を使います。 onkeypressであれば「ー」キーは45(アスキーコードの「-」)を返し、「=」キーは65(アスキーコードの「=」)を返し、「a」は97、「A」は65のように、大文字も小文字も区別して返されます。 以下のサイトで「onkeydownとonkeypressの違い」を比較できます。 https://web-designer.cman.jp/javascript_ref/keyboard/keycode/ >この仕掛けに何の意味やメリットがあるのか思い当たりません。 onkeydownは、実は「javascript仕様での、キーの物理番号」を返しています。 「キーの物理番号」を返すので「テンキーの数字キーと、フルキーの数字キー」を区別できます。同様に「テンキーの*と、フルキーの*(:)」も区別できます。 また「SHIFTキーを押しただけ」とか「CTRLキーを押しただけ」も判ります。 これが出来るのは「アスキーコードとは異なる、キーの物理番号」を返すようになっているからです。

zchess
質問者

お礼

私が参照した教本では、機能が「どんなコード規格でやるものなのか」 説明はありませんでした。 キーコードがアスキーコードとどう違うものなのか わかっていないと手ごわかったです。 なかなかたどり着けなかった情報でした。 非常に助かります。すっきりしました。 ありがとうございました。

関連するQ&A