https://github.com/ericmbarnard/Knockout-Validation/wiki/Native-Rules
我正在MCV3页面上使用淘汰赛验证。我的情况是我有两个按钮。一个是添加到集合,另一个是保存。 Add to集合在需要时查找以下属性:
FirstName: ko.observable().extend({ required: true }),
LastName: ko.observable().extend({ required: true }),
Title: ko.observable(),
Email: ko.observable().extend({ required: true, email: true }),
Date1: ko.observable(new Date()).extend({ required: true }),
我定义了两个函数来检查页面是否有效:
AddToCollection: function () {
if (!viewModel.isValid()) {
viewModel.errors.showAllMessages();
return false;
} else {
this.Collection.push(new Item(this.FirstName(), this.LastName(), this.Title(), this.Email()));
viewModel.clear();
}
},
save: function () {
if (!viewModel.isValid()) {
viewModel.errors.showAllMessages();
return false;
} else {
$.ajax({
url: '@Url.Action("DoSomethinn")',
type: "POST",
data: ko.toJSON(this),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
}
});
}
}
我想要做的是,如果调用了Save,我不希望FirstName,LastName和Email是必需的,只有Date1被验证,但AddToCollectoin是必需的,FirstName,LastName和Email是必需的叫,但Date1不是。如何设置Only If Native Rule,或者有更好的方法。
非常感谢任何帮助!
答案 0 :(得分:4)
onlyIf
选项可以在这里工作:
FirstName: ko.observable().extend({
required: {
params: true,
onlyIf: function(){ return someFlagIsTrue; }
}
您需要从点击事件或其他方式设置someFlagIsTrue
。