让Knockout在页面加载时不运行isValid()

时间:2013-09-18 14:42:03

标签: javascript knockout.js knockout-validation

我想在文本字段无效时添加数据属性(数据无效),如果有效则将其删除。这是html和js:

<form data-bind="submit: submitFields">
   First Name: <input type="text" runat="server" ID="FirstName" data-bind="value: firstName, valueUpdate: 'blur', attr: { 'data-invalid': !firstName.isValid()}"/>
   <br/>
   <button type="submit" >Submit</button>
</form>

var viewModel;

viewModel = function() {
    self = this;
    self.firstName = ko.observable().extend({
        required: true,
        notify: 'always'
    });

    //sets errors to an array of the error messages?
    self.errors = ko.validation.group(this, { deep: true, observable: false })

    self.submitFields = function(formElement) {
        if (self.errors().length > 0) {
           self.errors.showAllMessages();
           return;
        }
        //submit
    }
};

ko.applyBindings(new viewModel());

这是一个测试它的小提琴: http://jsfiddle.net/frontenderman/HhtEZ/2/

我的问题是firstName.IsValid()在pageload上运行。有一种优雅的方式来解决这个问题吗?我能想到的就是订阅firstName并使用一个标志在第一次运行我的视图模型时将data-attribute设置为null,然后在任何后续运行中返回!firstName.isValid()。

0 个答案:

没有答案