それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Javascript で 全角英数→半角英数

JavaScript で全角数値必須とかにイラッと来る?

イラッと来ませんか?来ますよね。私もイラッとします。JavaScriptで「全角半角」切替くらいやってほしい。

全角→半角

String.prototype.Zenkaku2HankakuJP = function(){
  return this.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);});
}

半角→全角

String.prototype.Hankaku2ZenkakuJP = function(){
  return this.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) + 0xFEE0);});
}

UTF16の文字コードの特性を活かして、変換をすることが出来る。

では何処に仕込むべきなのか?

onchage / onkeypress / onblur などで仕込んではいけませんよね。なぜなら、ユーザーの入力を不用意に変更してしまうのは、UXとしては良くない。

仕込むべきは値チェック。

ええ、値チェックで仕込むべきですよね。さらに言えば、全角半角のエラーで使うべきはなく「全角文字列も通す」時に使います。

value = input.value
if ( !value.ZenkakutoHankaku.match(pattern){
   throw "error";
}

ユーザーの入力値に幅をもたせるために使うべきです。どうしても数字のみというならばサーバーサイドか送信前に変換する法が良いかな。

全角住所に半角の番地を使えないとか言語道断だと思います。