jQueryを利用して、入力された電話番号をリアルタイムに半角に直す制御を記述しております。
WindowsのChrome、Edge、MacのSafariで検証したところ、全角モードで「0」を入力した場合だけ、半角の「0」の1文字に変換されるべきところが、半角の「00」になってしまう時がある問題にぶつかっております。他の全角「1〜9」についてはこの事象は発生しておりません。
全角「0」だけこの事象が発生する原因がわからず、解決に向けてお力添えをいただきたいです。
なお、MacのChromeでは発生しないようです。
発生しているバージョン
- OS: Windows 10 21H1 19043.1766
- ブラウザ: Chrome 103.0.5060.33
- jQuery: 3.4.1(codepen上でjquery 3.6.0を指定し下記コードをセットしても同様でした)
html
1<input minlength="9" id="tel" type="tel" name="tel">
javascript
1$("#tel").on("keydown keyup input change blur", function (e) { 2 var value = $(e.currentTarget).val(); 3 value = value 4 .replace(/[0-9]/g, function(s) { 5 return String.fromCharCode(s.charCodeAt(0) - 65248); 6 }) 7 .replace(/[^0-9]/g, ''); 8 $(e.currentTarget).val(value); 9});
回答3件