keydownで入力制御をした時に、全角文字が入力できない

特定のキー以外での入力をできないようにしたかったので、keydown時に指定したキーコード以外はキャンセルする処理を実装したのですが、全角入力時に入力させたいキーでも入力ができない状態になってしまったので備忘録としてメモしておきます。

サンプルコード

数値のキーのみ入力させたかったので、以下のように実装しました。

HTML

<input type="text" name="sample" id="sample" />

JavaScript

$(function() {
	$('#sample').on('keydown', function(e) {
		var k = e.keyCode;
		// 0~9, テンキ―0~9以外は入力キャンセル
		if(!((k >= 48 && k <= 57) || (k >= 96 && k <= 105))) {
			return false;
		}
	});
});

これでいけるのかと思っていたのですが、全角入力時に数値のキーを押しても反応しませんでした。
数値のみ入力のデモページ
 

サンプルコード2

調べてみると、日本語入力時はキーコードが違うらしいです。
console.logで入力したキーコードを表示するようにしてみます。

JavaScript

$(function() {
	$('#sample').on('keydown', function(e) {
		console.log(e.keyCode);
	});
});

数値のみ入力のデモページ
 

例えば、0のキーを押した時はそれぞれ以下のキーコードが返ってきました。

chrome 半角入力:48
全角入力:229
Firefox 半角入力:48
全角入力:なし
IE11 半角入力:48
全角入力:229

全角入力時はどのキーを押してもchromeとIIEで229が返ってきて、Firefoxではなにも返ってこないようです。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930