首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Knockout验证最初不起作用?

为什么Knockout验证最初不起作用?
EN

Stack Overflow用户
提问于 2016-09-25 04:07:25
回答 1查看 583关注 0票数 1

在一个简单的表单上使用knockoutjs和knockout-validation查看以下小提琴。如果您最初单击"go“,为什么不显示验证消息?

Javascript:

代码语言: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:

代码语言:javascript
复制
<input type="text" data-bind="value:name" />
<button type="button" data-bind="click:go">
  go
</button>

Fiddle

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-27 23:38:39

我认为这里的问题是,目前没有任何东西会触发验证器运行。

默认情况下,KO验证器插件在值更改时触发。在初始加载时,输入的值为null,并且定义的click事件不会更改此值,从而强制验证器触发。

相反,在go click事件中,如果某些内容无效,请尝试调用showAllMessages:

代码语言:javascript
复制
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());

Fiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39680488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档