【发布时间】:2016-06-09 00:47:24
【问题描述】:
我正在尝试为电话号码格式创建淘汰赛扩展。 第一次输入 2139139090 到 213-913-9090 时,电话号码格式正确。紧接着,如果我从数字中删除连字符(-),它不会在文本控件中格式化。但是,如果我将格式化的值从 js 代码记录到控制台,它会显示为格式化。空格的行为相同,像特殊字符一样 +1。如果我更改数字中的任何数字,所有格式都可以正常工作。
<input type="text" class="form-control" id="userform-phone" data-bind="textInputPhone:user.phone" />
ko.bindingHandlers.textInputPhone = {
init: function (element, valueAccessor) {
$(element).on('blur', function () {
var inputvalue = $(element).val().trim();
var observable = valueAccessor();
if (inputvalue) {
var regexstring = /^(?:\+?1)?\(?[- .]?(\d{3})\)?[- .]?(\d{3})[- .]?(\d{4})([-. ]?[a-zA-z].*)?$/gm
var phoneformat = '$1-$2-$3$4';
var formattedPhoneNumber = inputvalue.replace(regexstring, phoneformat);
observable(formattedPhoneNumber);
} else {
observable('');
}
});
},
update: function (element, valueAccessor) {
var valueUnwrapped = ko.utils.unwrapObservable(valueAccessor());
$(element).val(valueUnwrapped);
}
}
【问题讨论】: