如何从kendo maskedtextbox mvvm值绑定中删除提示字符



我正在使用Kendo UI Masked Textbox和MVVM值绑定。

viewmodel电话号码不包含任何像"()-"这样的提示字符,它只包含数字。

var viewModel = kendo.observable({ phoneNumber: "1234567890", onChange: function () { alert("event :: change " + this.get("phoneNumber")); } }); kendo.bind($("#example"), viewModel);

当您更改表单中的值并检查viewModel phoneNumber时(请参见onchange函数)。phoneNumber现在包含特殊/提示字符,例如phoneNumber: "(444) 555-5555"

这是我的问题,我希望MaskedTextbox的值只返回数字phoneNumber: "4445555555",而不返回特殊字符。

JS Fiddle 的完整代码段

做了更多的研究,找到了答案

使用MVVM时,用于取消数据绑定到可观察值的值的掩码的解决方案。单个maskedtextbox更改事件处理程序可以剥离任何值绑定的格式: <ul data-role="listview"> <li> <label> Home Phone: <input type="text" data-role="maskedtextbox" data-bind="value: homePhone, events: { change: maskStrip }" data-mask="(000) 000-0000" /> </label> </li> <li> <label> Cell Phone: <input type="text" data-role="maskedtextbox" data-bind="value: cellPhone, events: { change: maskStrip }" data-mask="(000) 000-0000"/> </label> </li> </ul>

var vm = kendo.observable({ homePhone: null, cellPhone: null, maskStrip: function (e) { var that = e.sender, stripped = that._unmask(that.value()), obs = e.data, val = that.element.data("bind"); if (val) { val = val.substring(val.indexOf('value: ') + 7); //remove properties before if (val.indexOf(',') > -1) val = val.substring(0, val.indexOf(',')); //remove properties after obs.set(val, stripped); } } });

最新更新