KnockOut.js 验证始终为真/errors.length = 0
Posted
技术标签:
【中文标题】KnockOut.js 验证始终为真/errors.length = 0【英文标题】:KnockOut.js validation always true / errors.length = 0 【发布时间】:2019-07-12 23:35:22 【问题描述】:我是使用淘汰赛 js 验证插件的新手。我的 observables 在另一个函数上。但似乎 User.errors = ko.validation.group(User) 和 User.errors = ko.validatedObsevable(User) 无法读取错误/无法验证我的 obsevables。
我尝试了一些小提琴代码:http://jsfiddle.net/KHFn8/3238/
在那个例子中,Conditions 和 observables 在同一个函数上。
这是我的 js 代码:
var User = function ()
this.UserId = ko.observable();
this.Fullname = ko.observable().extend( required: true );
this.Username = ko.observable().extend( required: true );
this.StartedDate = ko.observable().extend( required: true );
this.Email = ko.observable().extend( required: true );
this.Facebook = ko.observable().extend( required: true );
this.Address = ko.observable().extend( required: true );
this.MobileNumber = ko.observable().extend( required: true );
this.Birthdate = ko.observable().extend( required: true );
this.PositionId = ko.observable().extend( required: true );
UserModel function
self.Save = function ()
if (User.errors().length == 0)
alert(User.errors().length);
else
alert('Please check your submission.');
User.errors.showAllMessages();
User.errors = ko.validation.group(User);
ko.applyBindings(new userModel());
我只想验证必填字段并在提交/保存按钮上显示错误消息
【问题讨论】:
【参考方案1】:好的,尝试了 3 天之后.. 我知道答案是什么了..
我把 User.errors = ko.validation.group(User);发挥作用
var User = function()
...
this.errors = ko.validation.group(this); //change 'user' to 'this'
UserModel function
self.Save = function ()
if (this.errors().length == 0)
alert(this.errors().length);
else
alert('Please check your submission.');
ko.applyBindings(new userModel());
【讨论】:
这是什么语法UserModel function
那是我的 viewModel.. :D以上是关于KnockOut.js 验证始终为真/errors.length = 0的主要内容,如果未能解决你的问题,请参考以下文章