0

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

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

我试过使用

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

以及具有相同参数的ko.validation.configure,然后是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) 的调用,直到单击按钮,但它根本不会验证。

4

1 回答 1

1

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

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/

于 2013-06-28T19:36:45.030 回答