電話番号の検証に取り組んでおり、入力を電話番号で自動フォーマットする必要があり、数字のみを追加できるようにする必要があります。ただし、キーダウンとキープレスを使用して入力を制限しようとすると、iPhone で # と * を入力できます。キーダウン値を確認すると、どちらもそれぞれ 3 と 8 で同じです (キーコード 51 と 56)。これは Android ブラウザーでは完全に機能しますが、iPhone では失敗します。
誰もが同様の問題に直面しました。
$(formSelector + ' input[name^="phone"]').on('keydown keypress',function (e) {
// Allow: backspace, delete, tab, escape, and enter
if ( e.keyCode == 46 || e.keyCode == 8 || e.keyCode == 9 || e.keyCode == 27 || e.keyCode == 13 ||
// Allow: Ctrl+A
(e.keyCode == 65 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)
) {
// let it happen, don't do anything
return;
} else {
// Ensure that it is a number and stop the keypress
if (e.shiftKey || (e.keyCode < 48 || e.keyCode > 57) && (e.keyCode < 96 || e.keyCode > 105 ) ) {
e.preventDefault();
}
});
また、入力を「input propertychange」イベントにバインドし、パターン マッチングを使用するために、stackoverflow で提案された別の方法を 1 つ試しました。しかし、これは IPhone では正しく動作しますが、Android では失敗します。
$(formSelector + ' input[name^="phone"]').bind('input propertychange', function() {
var text = $(this).val();
if (isNaN(text)) {
$(this).val(text.replace(/[^\d]/gi, ''));
}
});
誰もこの問題の一般的な解決策を持っていますか??
前もって感謝します