0
国に基づいて電話番号フィールドの書式を設定しようとしています。ユーザーが詳細を入力しても正常に動作しますが、国が変更されて再び入力されたときは機能しません。 例: ドイツのフォームに入力してから、ページを再読み込みせずに郡を米国に変更して記入してください。電話の記入は「+」の形式が異なる場合でも追加されます。これはあなたのエラーの原因だったが、この行は単なる使用、それは速くキャッチしたこのフォームの検証Jqueryオブジェクト
$(this).val("+" + $(this).val());
に
$(this).val("+" + $this.val());
から修正を取得する必要がある場合
$(document).ready(function($){
$('#country').on('change', function() {
if (this.value == 'US' || this.value == 'CA')
{
$('#C_BusPhone')
.keydown(function (e) {
var key = e.charCode || e.keyCode || 0;
$phone = $(this);
if (key !== 8 && key !== 9) {
if ($phone.val().length === 4) {
$phone.val($phone.val() + ')');
}
if ($phone.val().length === 5) {
$phone.val($phone.val() + ' ');
}
if ($phone.val().length === 9) {
$phone.val($phone.val() + '-');
}
}
return (key == 8 ||
key == 9 ||
key == 46 ||
(key >= 48 && key <= 57) ||
(key >= 96 && key <= 105));
})
.bind('focus click', function() {
$phone = $(this);
if ($phone.val().length === 0) {
$phone.val('(');
}
else {
var val = $phone.val();
$phone.val('').val(val);
}
})
.blur(function() {
$phone = $(this);
if ($phone.val() === '(') {
$phone.val('');
}
});
}
else
{
$('#C_BusPhone')
.keydown(function (e) {
if ($(this).val().indexOf("+") === -1) {
$(this).val("+" + $this.val());
}
})
}
});
});
サンプルコードを[fiddle](https://jsfiddle.net/)で提供できますか?デバッグの高速化 –
https://jsfiddle.net/ranred/dap3L426/ – temperature
入力時に書式設定を行う必要はありますか?おそらく、番号を変更する方が簡単です。各国のフォーマッタメソッドを作成し、国が変更されたときに前のものを削除します。 生データをカスタムデータ属性として要素に格納することをお勧めします。 また実際の検証のためにこれを見てください:http://html5pattern.com/Phones – imjosh