0

如果无效,我想将数据属性(数据无效)添加到文本字段,如果有效则将其删除。这是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() 在页面加载时运行。有没有一种优雅的方法来解决这个问题?我能想到的只是订阅 firstName 并使用标志在第一次运行我的视图模型时将数据属性设置为 null ,然后在任何后续运行中返回 !firstName.isValid() 。

4

0 回答 0