0
我創建了一個自定義的subscribable函數,可以將電話號碼格式化爲xxx-xxx-xxxx格式,並且效果非常好。但是,必須添加一個新約束,以便如果用戶鍵入的值超過11位數字,則不應格式化該數字。你能告訴我爲什麼這個代碼仍然格式化輸入超過11位數字嗎?定製Knockout可訂閱功能
ko.subscribable.fn.formatPhoneNumber = function() {
return ko.computed({
read: function() {
if (this().length > 11) {
return this();
} else {
return this()
.replace(/\D+/g, "")
.replace(/^[01]/, "")
.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3")
.substring(0, 12);
}
},
write: function (value) {
if (this(value).length > 11) {
this(value);
this.valueHasMutated();
} else {
this(value.replace(/\D+/g, "")
.replace(/^[01]/, "")
.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3")
.substring(0, 12));
this.valueHasMutated();
}
},
owner: this
}).extend({ notify: 'always' });
};
我以爲格式的電話號碼似乎是不足夠通用的,添加到'subscribable'。 – Agalo