2013-05-21 2 views
1

У меня есть простая форма, которая использует нокауты и нокауты. При запуске IE в режиме совместимости у меня есть следующее поведение.Нокаут Валидация требуется проверка IE8

Поле обязательно .:

self.oldPassword = ko.observable().extend({ required: true}); 

При загрузке страницы, я могу видеть в режиме отладки, что сообщение: поле необходимо.

Но когда я начинаю вводить ошибку, она изменяется на: Введите значение, которое больше или равно true.

Я потерялся здесь, потому что хочу поддержать хотя бы IE8. У меня нет этой проблемы в IE10, Chrome или FireFox. И я не хочу переписывать все мои файлы javascript с помощью нокаутных моделей и валидаций.

Звучит знакомая проблема? И есть ли решение?

ответ

0

Я бы отсканировал ваш vm для любого экземпляра правила проверки min и удостоверился, что для него не установлено значение true. это сообщение об ошибке специфично для встроенного правила min, и если вы установите для params значение true для этого правила, оно выплевывает это сообщение об ошибке.

я воссоздал проблему со следующим:

var vm = function() { 
    var self = this; 

    self.oldPassword = ko.observable().extend({ required: true }); 

    self.oldPassword.extend({ 
     min: true 
    }); 
} 

, если вы не использовали МИН правило на все, чтобы убедиться, что файл Нокаут валидация не расслоение плотной неправильно или что-то странное.

1

Проверка проверки нокаута, если атрибуты проверки html-5 указаны в элементе, который вы наблюдаете, привязаны и добавлены эквивалентные правила проверки. Это список проверки HTML-5 атрибутов проверяет:

var html5Attributes = ['required', 'pattern', 'min', 'max', 'step']; 

Для каждого из них вызывает функцию hasAttribute:

hasAttribute: function (node, attr) { 
    return node.getAttribute(attr) !== null; 
} 

В режиме совместимости с IE7/IE8 node.getAttribute (атр) возвращает пустую строку если атрибут не найден, это выражение «node.getAttribute (attr)! == null» всегда истинно.

Таким образом, ваш наблюдаемый в режиме совместимости будет иметь 5 дополнительных правил проверки. К счастью, все это не имеет отношения к реальным IE7/IE8

+0

У меня была такая же проблема, и я попытался решить ее каким-то хакерским способом. Я рад, что это проблема только в режиме совместимости. Мне нужно будет протестировать его, когда у меня будет время установить vm с IE 8. – bsayegh

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