在简单的表格上使用knockoutjs和knockout-validation查看以下小提琴。如果您最初单击“开始”,为什么不显示验证消息?
使用Javascript:
var viewmodel = function() {
var self = this;
self.name = ko.observable(null).extend({
required: true
});
self.validation = ko.validatedObservable({
name: self.name
});
self.go = function() {
console.log(self.name());
self.name.isValid();
};
}
ko.applyBindings(new viewmodel());
HTML:
<input type="text" data-bind="value:name" />
<button type="button" data-bind="click:go">
go
</button>
答案 0 :(得分:1)
我认为这里的问题是目前没有任何东西可以触发验证器运行。
默认情况下,KO验证器插件会在更改值时触发。在初始加载时,输入的值为null,并且定义的click事件不会更改此值,从而强制验证器触发。
相反,在go go事件中,如果某些内容无效,请尝试调用showAllMessages:
var viewmodel = function() {
var self = this;
self.name = ko.observable(null).extend({
required: true
});
self.validation = ko.validation.group([self.name]);
self.go = function() {
if(self.name.isValid()){
console.log("I'm valid!");
console.log("Name: " + self.name());
}else{
self.validation.showAllMessages();
}
};
}
ko.applyBindings(new viewmodel());