我已经开始在http://ericmbarnard.github.com/Knockout-Validation/验证引擎中使用knockout js验证,我不清楚如何执行以下操作:
1)假设我想根据条件设置所需的特定字段。我怎么做?
例如
this.Username = ko.observable()。extend({required:true}); // make required = true仅当this.UserType = 2,等等......
2)我已经验证了正在验证的字段旁边的验证消息。我只想在字段旁边显示一个'*',并在页面底部的validationsummary字段中显示错误消息。应显示所有验证错误。怎么做?
3)表单提交要避免,直到表单验证通过。是的,我收到验证错误消息,表单仍然提交。所以我想我做错了什么。以下是我的代码:
$(document).ready(function () {
var model;
// enable validation
ko.validation.init();
$.ajax({
type: "POST",
url: SERVER_PATH + '/jqueryservice/DataAccessService.asmx/GetData',
async: false,
data: "{ }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result, status) {
model = new ViewModel(result);
ko.applyBindings(model);
},
error: GetDataError
});
$('#submit').click(function () {
var data = ko.toJS(model);
delete data.Vehicles;
delete data.CopyWeeks;
delete data.SetupTotal;
delete data.CloseTotal;
var mappedItems = ko.utils.arrayMap(data.DailyItemList, function (item) {
delete item.Add;
delete item.Delete;
return item;
});
data.DailyItemList = mappedItems;
$.ajax({
type: "POST",
url: SERVER_PATH + '/jqueryservice/DataAccessService.asmx/ProcessData',
async: false,
data: ko.toJSON(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result, stat) {
alert(success);
return false;
},
error: function (e) {
alert(e);
}
});
});
});
提前感谢您的帮助。
编辑: 我已经看到我可以设置验证配置如下: ko.validation.configure({ decorateElement:false, errorMessageClass:'errorMsg', insertMessages:false, parseInputAttributes:true, messageTemplate:'sErrorMsg' }); ko.validation.init();
但我不确定如何定义我的错误消息模板's ErrorMsg'
答案 0 :(得分:3)
1)。假设我想根据条件设置所需的特定字段....
对于此ko验证包含native rule。你可以这样做:
var myObj = ko.observable().extend({ required: {
onlyIf: function() {
//here you can place your codition and can return..
//true or false accordingly
}
}});
2)。我已经验证了正在验证的字段旁边的验证消息..
为此,您应该检查Validation Binding。在此验证中,选项可以为您完成任务。
更新:这是一个小提琴,演示了根据您的要求使用messageTemplate
绑定。
http://jsbin.com/ocizes/3/edit
3)。表单提交要避免,直到表单验证通过....
为此,您可以使用group
,例如:
yourViewModel.Errors = ko.validation.group(yourViewModel);
现在 Errors 属性包含您的observable的错误消息(如果有)。因此,在提交表单之前,您可以检查以下内容:
if(yourViewModel.Errors().length == 0) {
//submit the form
}
else {
yourViewModel.Errors.showAllMessages();
//this line shows all the errors if validation fails,
//but you can omit this.
}