0

Я настроил пример в JSFiddle, http://jsfiddle.net/4stu2jg3/63/Нокаут-валидация - Пользовательский шаблон Validation сообщения не меняются

В первом текстовом поле, если вы добавите нечисловой номер и нажмите кнопку это покажет требуемое сообщение , Я бы предположил, что это должно показывать сообщение с номером, так как есть значение?

Во втором текстовом поле, если вы удалите строку и нажмите кнопку, будет отображаться номер сообщения. Я ожидаю, что это покажет нужное сообщение?

Если вы закомментируете пользовательский шаблон, все будет работать так, как я ожидал. Я не уверен, что я делаю неправильно?

<div id="test"> 
    <div><input data-bind="value: first" /></div> 
    <div><input data-bind="value: last" /></div> 

    <input type="button" value="Validate" /> 
</div> 

<script type="text/html" id="qmsKoValidationTemplate"> 
    <span class="qms-val-panel" data-bind="visible: field.isModified() && !field.isValid(), text: field.error"></span> 
</script> 

ko.validation.init({ 
    registerExtenders: true, 
    messagesOnModified: true, 
    insertMessages: true, 
    parseInputAttributes: false, 
    messageTemplate: "qmsKoValidationTemplate" 
}); 

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

    self.first = ko.observable() 
     .extend({required: { message: 'Required' } }) 
     .extend({number: { message: 'Number' } }); 

    self.last = ko.observable('Del') 
     .extend({required: { message: 'Required' } }) 
     .extend({number: { message: 'Number' } }); 
} 

var s = new t(); 

ko.applyBindings(s, document.getElementById('test')); 

$('input[type="button"]').click(function() {  
    //console.log(s.first(), s.last()); 
    //console.log(ko.validatedObservable(s).isValid()) 
    ko.validatedObservable(s).isValid() 
}); 

ответ

1

Использование немного отладки, ko.isObservable(field.error) возвращает ложь, объясняющей «не меняется» аспект проблемы.

При взгляде ближе в шаблоне по умолчанию используется custom bindingvalidationMessage. Замена привязки text с этой настраиваемой привязкой, как представляется, обеспечивает желаемое поведение.

<span class="qms-val-panel" data-bind="visible: field.isModified() && !field.isValid(), validationMessage: field">   
</span> 

Modified fiddle

+0

Удивительное спасибо !!! Это было то, что мне нужно. – JoeyD

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