Durandal JS在页面加载时触发的Knockout Validation与messagesOnModified值无

Knockout Validation with Durandal JS firing on pageload regardless of messagesOnModified value

本文关键字:Knockout Validation 值无 messagesOnModified JS 加载 Durandal      更新时间:2023-09-26

我正在开发Durandal JS SPA应用程序,希望使用Knockout Validation。

问题是验证是在页面加载时触发的,这不是我想要的——我想自己触发验证。

我试过使用

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

以及具有相同参数的ko.validation.config,然后是ko.validation.init();

这是我的视图模型的一个片段。

function ViewModel(){
    var self = this;
    self.username = ko.observable().extend({
        required: true
    });
    self.errors = ko.validation.group(self);
}

我还试着将对ko.validation.group(self)的调用延迟到单击按钮,但它根本无法验证。

假设您只想显示每个操作的验证错误摘要,则可以执行以下操作:

html

<input type="text" data-bind='value: username' />
<br/>
<button data-bind="click: submit">Submit</button>
<div data-bind="visible: showErrors, text: errors" />

js

function ViewModel() {
    var self = this;
    self.username = ko.observable().extend({
        required: true
    });
    self.showErrors = ko.observable(false);
    self.submit = function () {
        self.showErrors(true);
        if (self.isValid()) {
            // save data here   
        }
    }
    self.errors = ko.validation.group(self);
}

样品小提琴

http://jsfiddle.net/LvHUD/1/