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