jQueryにて全角の数字と記号(/)を半角に置換したいです。
数字は半角に置換できているのですが、/が置換出来ていないです。
調べてもわかりませんでしたので、分かる方がいらっしゃったら教えていただきたいです。
現在のソースコードは下記のようになっています。
宜しくお願いいたします。
// 半角変換 function numToLower(target) { // 全角数字配列 var fullNumber = new Array("1","2","3","4","5","6","7","8","9","0","/"); // 半角数字配列 var halfNumber = new Array(1,2,3,4,5,6,7,8,9,0,"/"); var count; while(target.match(/[0-9/]/)){ for(count = 0; count < fullNumber.length; count++){ target = target.replace(fullNumber[count], halfNumber[count]); } } return target; }
追記します。
この関数を呼び出しているjsはこのようになっています。
試しましたが、numToLower関数を呼び出している記述を消して、そこに直接置換する記述を書くと動作しました。
ですが、関数を呼び出すと/だけ置換できないです。
var date = new Date(); var dateFormat = new DateFormat("yyyy/MM/dd"); var date_str = $(target).val(); //targetはテキストフォーム date_str = date_str + ''; date_str = numToLower(date_str) var date_arr = date_str.split("/"); var year = date.getFullYear(); var month = 1; var day = 1; // yyyy/mm/dd 形式の場合 if( date_arr.length == 3) { year = date_arr[0] - 0; month = date_arr[1] - 1; day = date_arr[2] - 0; } // yyyy/mm 形式の場合 else if( date_arr.length == 2 ) { month = date_arr[0] - 1; day = date_arr[1] - 0; date_str = dateFormat.format(new Date(year, month, day)); } //yyyymmdd形式の場合 else if( date_arr.length == 1 && date_str.length == 8 ){ year = date_str.slice(0,4); month = date_str.slice(4,6) - 1; day = date_str.slice(6); date_str = dateFormat.format(new Date(year, month, day)); } date = new Date(year, month, day); $(target).val(dateFormat.format(date));
回答3件
あなたの回答
tips
プレビュー