【问题标题】:Knockout Validation - How to show a single error message淘汰赛验证 - 如何显示单个错误消息
【发布时间】:2014-02-11 11:31:55
【问题描述】:

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

除了“提交”操作之外,我的表单还有一个“保存进度”操作。它以几乎相同的方式提交到服务器,但必填字段更少。

我想将四个绝对必填字段保留在它们当前在视图模型中的位置......即将它们保留在更大的验证组中以供提交。

在淘汰验证中是否有一种方法可以像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 块,还是我应该采取不同的方法?

谢谢

【问题讨论】:

    标签: javascript validation knockout.js knockout-validation


    【解决方案1】:

    或者,有没有办法从我的视图模型中挑选字段和 将它们放在自己的验证组中(但将它们放在较大的 组)?

    是的,您可以定义任意数量的组;并且 observables 可以在多个验证组中。

    例如,假设您的视图模型中所有错误的验证组如下:

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

    您也可以像这样添加单独的组:

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

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

    希望有帮助

    【讨论】:

    • 完美。谢谢@rwisch45。也在这里找到它,直接从源:official docs。不知道为什么我发现那个文档网站很难导航,但我确实知道。
    • 那么,为 observable 显示单个错误消息的唯一方法是将其添加到组中?
    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 2014-12-04
    • 2014-05-28
    • 2013-08-29
    • 2014-04-19
    • 2012-09-05
    • 2013-05-28
    • 2014-08-09
    相关资源
    最近更新 更多