Knockout textInput和maskedinput插件

是否有一种简单的方法可以使用data-bind="textInput: aProperty"在用户输入时添加输入掩码或一些自动格式?

使用蒙面输入插件的工作方式,但我失去了Knockout的“textInput:”提供的“as-you-type”更新,因此脚本的其他部分只能在字段失去焦点后看到更改(有效地表现为平面在Knockout中使用旧的“value:”绑定。

一个具有计算可观察性的天真解决方案,格式化不起作用,因为每次更新自动字段的按键都会将输入焦点更改为页面中的其他位置,因此用户无法继续输入。

我可以让这两个库彼此玩得很好,还是应该制作我的自定义解决方案? 他们在事件处理程序中做了很多事情,以便与所有浏览器兼容,所以很难让它们一起工作并不奇怪,但这也正是为什么我不想摆弄所有这些键盘,输入,改变,事件由我自己。

StackOverflow之前的所有答案都不介意在字段失去焦点后传播更改。 也许那些答案是在textInput被添加到Knockout之前发布的,所以当时没有更好的东西。 这就是我问一个新问题的原因。

我写了一个小提琴,只使用一个计算的observable,我没有焦点问题。 这是否按预期工作?

 var displayString = ko.observable(''); var formattedString = ko.computed({ read: function () { return displayString(); }, write: function (newValue) { var f = format(newValue); console.debug("Format", newValue, "=", f); displayString(f); } }); 

http://jsfiddle.net/csmmnq25/