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"; }
ユーザーの入力値に幅をもたせるために使うべきです。どうしても数字のみというならばサーバーサイドか送信前に変換する法が良いかな。
全角住所に半角の番地を使えないとか言語道断だと思います。