我实际上在SO上描述了在提交时检查我的视图模型以进行验证。
除“提交”操作外,我的表单还具有“保存进度”操作。它以几乎相同的方式提交给服务器,但所需字段较少。
我想将四个绝对必填字段保留在当前它们在视图模型中的位置,即将它们保留在较大的验证组中以进行提交。
敲除验证中是否有一种方法可以像显示showAllMessages()
整个验证组一样简单地显示特定消息?我已经查看了源代码,但找不到与showMessage()
附加到单个错误类似的东西。
或者,是否有一种方法可以从我的视图模型中选择和选择字段,并将其放入自己的验证组中(但也将其保留在较大的组中)?
因此,例如:
var ViewModel = ko.validatedObservable({
requiredForSave1: ko.observable().extend({ required: true }),
requiredForSave2: ko.observable().extend({ required: true }),
requiredForSubmit: ko.observable().extend({ required: true })
// ... and many more.
});
$('#sumbit').on('click', function(){
//check the entire validation group
if ( ViewModel.errors().length === 0 ){
doSubmit();
}
else{
ViewModel.errors.showAllMessages();
}
});
$('#save').on('click', function(){
//check only part of the validation group
if ( ViewModel.requiredForSave1.isValid() &&
ViewModel.requiredForSave2.isValid() ){
doSubmit();
}
else{
//show only one or two specific validation messages.
//???
}
});
有没有办法填写最后一个else
方框,还是我应该采用其他方法?
谢谢
或者,是否有一种方法可以从我的视图模型中选择和选择字段,并将其放入自己的验证组中(但也将其保留在较大的组中)?
是的,您可以根据需要定义任意多个组。可观察值可以在多个验证组中。
因此,例如,假设您的视图模型中所有错误的验证组如下:
ViewModel.errors = ko.validation.group(ViewModel);
您还可以添加单个组,如下所示:
ViewModel.saveErrors = ko.validation.group([ViewModel.requiredForSave1, ViewModel.requiredForSave2]);
同样,通过调用showAllMessages
验证组,您仅显示该组中可观察对象的消息。ViewModel.saveErrors.showAllMessages()
将只显示为验证消息requiredForSave1
和requiredForSave2
希望有帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句