我有IE10的问题。我正在使用knockout.js作为MVVM。我还使用输入验证来确保只接受数值。其中一个验证是来自here的jquery.numeric。在所有浏览器中一切正常,但在IE10中没有。使用IE10验证是有效的,但绑定不起作用意味着我无法从文本框中输入它始终为空的值。请帮助我的代码。
HTML和jQuery
<div class='liveExample'>
<p>With jquery.numeric: <input data-bind='value: withnumeric' id="withnumeric"/></p>
<p>With/Out jquery.numeric: <input data-bind='value: withoutnumeric' /></p>
<p><button data-bind="click: CompareBehavior" type="button">Submit</button>
</div>
$(document).ready(function(){
$('#withnumeric').numeric();
//this one doesn't work also
// $("#withnumeric").bind("keyup paste", function () {
// setTimeout(jQuery.proxy(function () {
// this.val(this.val().replace(/[^0-9]/g, ''));
// }, $(this)), 0);
//});
});
ViewModel
var ViewModel = function() {
this.withnumeric = ko.observable();
this.withoutnumeric = ko.observable();
self.CompareBehavior = function () {
alert(this.withnumeric());
alert(this.withoutnumeric());
};
};
ko.applyBindings(new ViewModel());
如果你想玩我的jsfiddle,请看这里http://jsfiddle.net/Vs8yn/3/
答案 0 :(得分:3)
这似乎是Internet Explorer 10和jQuery-numeric的兼容性问题。好消息是你可以告诉Knockout使用其他事件(除change
之外)来更新绑定。在这种情况下,添加blur
就足够了:
<input data-bind='value: withnumeric, valueUpdate: "blur"' id="withnumeric"/>
jsFiddle:http://jsfiddle.net/Vs8yn/12/
答案 1 :(得分:0)
在你的jsFiddle中,你没有在加载时绑定你的视图模型:
$(function(){
ko.applyBindings(new ViewModel());
$('#withnumeric').numeric();
});
您还需要使用值初始化observable:
var ViewModel = function() {
var self = this;
self.withnumeric = ko.observable(0);
self.withoutnumeric = ko.observable(0);
self.CompareBehavior = function () {
alert(self.withnumeric());
alert(self.withoutnumeric());
};
我已经更新了它,它似乎可以在IE10中使用。