0
我试图格式化基于国家的电话号码字段。当用户填写详细信息时逻辑工作正常,但在国家更改并重新填写时不起作用。 例如: 填写德国的表格,然后如果尝试将县更改为美国并填写电话“+”,即使格式不同,也不会重新加载页面。表单验证Jquery对象
$(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());
}
})
}
});
});
你能提供一个示例代码的[小提琴](https://jsfiddle.net/)吗?它会使调试方式更快 –
https://jsfiddle.net/ranred/dap3L426/ – temperature
是否必须在键入时进行格式设置?重新格式化onchange号码可能会更容易。为每个国家创建格式化程序方法,并附上正确的/在国家更改时拆除上一个。 您应该将原始数字作为自定义数据属性存储在元素上。 也看看这实际验证:http://html5pattern.com/Phones – imjosh