0

我的IE10有问题。我正在使用 knockout.js 作为 MVVM。我还使用输入验证来确保只接受数值。其中一项验证是 jquery.numeric from here。在所有浏览器中一切正常,但在 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);
//});
});

视图模型

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/

4

2 回答 2

3

这似乎是与 Internet Explorer 10 和 jQuery-numeric 的兼容性问题。好消息是您可以告诉 Knockout 使用其他事件(除了change)来更新绑定。在这种情况下,添加blur就足够了:

<input data-bind='value: withnumeric, valueUpdate: "blur"' id="withnumeric"/>

jsFiddle:http: //jsfiddle.net/Vs8yn/12/

于 2013-07-03T02:22:29.240 回答
0

在您的 jsFiddle 中,您没有在加载时绑定您的视图模型:

$(function(){
    ko.applyBindings(new ViewModel());
    $('#withnumeric').numeric();
});

你还需要用一个值初始化 observables:

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 中工作。

于 2013-06-03T09:26:30.147 回答