0

IE10に問題があります。MVVMとしてノックアウト.jsを使用しています。また、入力検証を使用して、数値のみが受け入れられるようにしています。検証の 1 つは 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

0

あなたのjsFiddleでは、ロード時にビューモデルをバインドしていません:

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

また、オブザーバブルを値で初期化する必要があります。

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 に答える