我想在文本字段无效时添加数据属性(数据无效),如果有效则将其删除。这是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()。