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

Posted

技术标签:

【中文标题】如何从 kendo maskedtextbox mvvm 值绑定中删除提示字符【英文标题】:how to remove prompt character from kendo maskedtextbox mvvm value binding 【发布时间】:2015-06-07 13:52:11 【问题描述】:

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

viewmodel phonenumber 不包含任何提示字符,例如“()-”,它仅包含数字。

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" 而不是特殊字符。

Full Code Snippet @JS Fiddle

【问题讨论】:

【参考方案1】:

做了更多的研究,发现了answer

使用 MVVM 时取消屏蔽数据绑定到 observable 的值的解决方法。单个 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); );

【讨论】:

请将答案添加到您的帖子中,以防 URL 失效。另外,接受你自己的答案。 :)

以上是关于如何从 kendo maskedtextbox mvvm 值绑定中删除提示字符的主要内容,如果未能解决你的问题,请参考以下文章

C# 公共控件之maskedTextBox

Windows 窗体:无法单击以聚焦非***窗体中的 MaskedTextBox

MaskedTextBox强制使用UpperCase字符

如何从 Kendo 网格中的 ClientTemplate 调用 javascript 方法?

Kendo 数据网格 - 如何从嵌套的 JSON 对象设置列值?

如何从 Kendo.Grid 的 ClientTemplate 内部向 JavaScript 函数发送参数?