【问题标题】:knockout-validation - Custom Template Validation Messages are not changing淘汰赛验证 - 自定义模板验证消息没有改变
【发布时间】:2015-01-08 00:24:58
【问题描述】:

我已经在 J​​SFiddle 中设置了一个例子,http://jsfiddle.net/4stu2jg3/63/

如果您在第一个文本框中添加非数字数字并单击按钮,则会显示所需的消息。我会假设这应该显示数字消息,因为有一个值?

如果您删除字符串并单击按钮,则在第二个文本框中将显示数字消息。我希望这能显示所需的信息?

如果您注释掉自定义模板,一切都会按我的预期工作。我不确定我做错了什么?

<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()
});

【问题讨论】:

    标签: data-binding knockout.js knockout-validation validationmessage


    【解决方案1】:

    使用一点调试,ko.isObservable(field.error) 返回 false,这将解释问题的“不变”方面。

    仔细观察,默认模板中使用了custom binding validationMessage。用此自定义绑定替换 text 绑定似乎提供了所需的行为。

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

    Modified fiddle

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 2013-07-01
      • 1970-01-01
      • 2017-09-26
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      相关资源
      最近更新 更多