2013-06-03 1 views
0

У меня проблема с IE10. Я использую knockout.js как MVVM. Я также использую входные проверки, чтобы гарантировать, что будут приняты только числовые значения. Одним из валидаций является jquery.numeric от here. Все работает отлично во всех браузерах, но не в IE10. Используя 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/

ответ

3

Это проблема совместимости с Internet Explorer 10 и jQuery-numeric. Хорошей новостью является то, что вы можете сказать, что Knockout использует другие события (в дополнение к change) для обновления привязки. В этом случае добавление blur достаточно:

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

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

+0

Наконец-то !!! Большое спасибо! Теперь он решил проблему. –

+0

valueUpdate: «blur» сделал трюк для IE10 и IE11 – GwenM

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.

+0

Вы можете игнорировать Самовозврат; линии в модели представления, я только что попробовал несколько вещей в первую очередь. –

+0

Это не определено. –

+0

См. Обновление, он работает для меня в скрипке. –

Смежные вопросы