Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';t敲除验证最初需要的工作?_Javascript_Html_Knockout.js_Knockout Validation - Fatal编程技术网

Javascript 为什么';t敲除验证最初需要的工作?

Javascript 为什么';t敲除验证最初需要的工作?,javascript,html,knockout.js,knockout-validation,Javascript,Html,Knockout.js,Knockout Validation,在一个简单的表单上使用knockoutjs和knockoutvalidation检查下面的fiddle。如果最初单击“go”,为什么不显示验证消息 Javascript: var viewmodel = function() { var self = this; self.name = ko.observable(null).extend({ required: true }); self.validation = ko.validatedObse

在一个简单的表单上使用knockoutjs和knockoutvalidation检查下面的fiddle。如果最初单击“go”,为什么不显示验证消息

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:


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

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

相反,在go click事件中,如果某些内容无效,请尝试调用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());

你说的“最初”是什么意思?随后的单击也不会显示任何验证消息。。。
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());