我正在尝试根据国家/地区格式化电话号码字段。当用户填写详细信息但当国家/地区更改并再次填写时,逻辑无法正常工作。 例如: 填写德国的表格然后如果尝试将县改为美国而没有重新加载页面并填写电话“+”正在添加,即使它的格式不同。
$(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());
}
})
}
});
});
答案 0 :(得分:0)
不确定这是否是导致错误的原因,但此行需要从
更正 $(this).val("+" + $this.val());
到这个
$(this).val("+" + $(this).val());
这是一个快速捕获,只需使用您的浏览器JavaScript控制台进行调试。
查看更新的小提琴here。您可能还想将起始括号添加到国际前缀中。