使用正则表达式的电话号码格式的knockout绑定处理程序

时间:2014-07-09 15:32:24

标签: knockout.js

如何使用正则表达式使用knockout bindinding handler显示电话号码格式?电话号码格式如 (xxx)xxx-xxxx。

我的代码在这里

function formatPhone() {
    var regex = new RegExp('00(\d{2})(\d)(\d{3})(\d{2})');
    return regex;
}

ko.bindingHandlers.formatNumberText = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        ko.applyBindingsToNode(element, formatPhone);
    }
};

并在.cshtml中显示电话号码:

  <span data-bind="formatNumberText:Number"></span>

2 个答案:

答案 0 :(得分:3)

你可以这样做:

ko.bindingHandlers.formatNumberText = {
    update: function(element, valueAccessor) {
        var phone = ko.utils.unwrapObservable(valueAccessor());
        var formatPhone = function() {
            return phone.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3");
        }
        ko.bindingHandlers.text.update(element, formatPhone);
    }
};

包装标准ko绑定'text'。 用于电话的正则表达式用10位数字符串表示。 查看小提琴:http://jsfiddle.net/nk22Z/1/

答案 1 :(得分:0)

this.phone = ko.observable(null).extend({ phoneUS: true });

<div class="col-sm-4" data-bind="validationElement: phone">
<input type="text" class="form-control height_25" data-bind="value: phone" />
</div>

phoneUS验证支持:(xxx)xxx-xxxx

相关问题