Knockout验证 - 如何显示单个错误消息

时间:2014-01-21 17:47:39

标签: javascript validation knockout.js knockout-validation

我在提交验证as described here on SO, actually时检查我的视图模型。

除“提交”操作外,我的表单还有“保存进度”操作。它以相同的方式提交给服务器,但所需字段较少。

我想保留四个绝对必填字段,这些字段位于View模型中...即将它们保存在较大的验证组中以供提交。

Knockout Validation中是否有一种方法可以像完整验证组一样以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块,或者我应该采用不同的方法来解决这个问题?

由于

1 个答案:

答案 0 :(得分:9)

  

或者,有没有办法从我的View Model中选择字段   把它们放在自己的验证组中(但保留在较大的组中)   小组也是如此)?

是的,您可以根据需要定义任意数量的组;和observables可以在多个验证组中。

因此,举例来说,假设视图模型中所有错误的验证组如下:

ViewModel.errors = ko.validation.group(ViewModel);

您还可以添加以下各个组:

ViewModel.saveErrors = ko.validation.group([ViewModel.requiredForSave1, ViewModel.requiredForSave2]);

此外,通过在验证组上调用showAllMessages,您只显示该组中可观察对象的消息。 ViewModel.saveErrors.showAllMessages()只会显示requiredForSave1requiredForSave2

的验证消息

希望有所帮助