
入力フォームで全角英数字が入力された時に、自動で半角英数字に変換する方法です。
PHPの場合は mb_convert_kana()という関数があり、オプションを指定すればあらゆる変換が可能なのでJavaScriptやjQueryにも同様の関数があると思いっていましたが、見当たりませんでした。
(もしかしたら見当たらないだけで、関数が存在しているのかもしれません・・・)
文字コード表を使って判断するような感じの方法で変換を行ってみました。
半角を全角に変換するプログラム
全角英数・半角英数の文字コードの区切りの場所から-65248の間が半角英数の文字コードになります。
10進数、16進数での表記があります。
JavaScriptで半角に変換する方法
// 半角に変換(10進数) str.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 65248); });
// 半角に変換(16進数) str.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) - 0xFEE0); });
これを使えば全角英数を半角英数に変換できます。
jQueryでフォームの入力値を半角に変換
<script type="text/javascript"> $(function(){ $(".keyword").blur(function(){ charChange($(this)); }); charChange = function(e){ var val = e.val(); var str = val.replace(/[A-Za-z0-9]/g,function(s){return String.fromCharCode(s.charCodeAt(0)-0xFEE0)}); if(val.match(/[A-Za-z0-9]/g)){ $(e).val(str); } } }); </script>
3行目:blur はフォーカスが離れた時の処理を行います。
4行目:全角→半角変換処理はcharChangeという関数を作り、それを読み込みます。
8行目:charChange関数を作成します。
9行目:テキストボックスの値をvalという変数に入れます。
10行目〜12行目:全角英数を半角英数に変換しています。
XHTML
<p><input type="text" class="keyword"></p>
フォームのテキストボックスにクラス名を指定します。
半角を全角に変換(参考)
全角英数・半角英数の文字コードの区切りの場所から+65248の間が半角英数の文字コードになります。
// 全角に変換(10進数) str.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) + 65248); }); // 全角に変換(16進数) str.replace(/[A-Za-z0-9]/g, function(s) { return String.fromCharCode(s.charCodeAt(0) + 0xFEE0); });