【问题标题】:How to know which field is invalid in knockout validation?如何知道淘汰验证中哪个字段无效?
【发布时间】:2015-02-03 13:30:19
【问题描述】:

我有一个相当大的淘汰模型,我想验证其中的所有嵌套模型:

self.errors = ko.validation.group(self, { deep: true });

验证器发现错误:

> self.errors()
["This field is required."]

我不知道我的巨大模型的哪个字段无效。我怎样才能找到它?

【问题讨论】:

标签: javascript knockout.js knockout-validation


【解决方案1】:

我猜你应该正在寻找这样的东西

// Getting errors
var errors = ko.validation.group(this, {
    deep: true,
    observable: false
});

// New method: getting extended details
var details = errors.getDetails();

for (var i = 0; i < details.length; i++) {
    var d = details[i];

    /*
        Every element contains the following fields:

        "observable" - a reference to the target observable.
        "error" - the error message.
        "rule" - the name of the failed validation rule.
        "data" - an object that contains extension data (provided via "extend" method) for every rule. E.g. "data.required == true".
    */
}

PS:您需要在验证文件中添加几行以使getDetails() 工作,即您拥有的验证脚本文件中可能不存在。(检查参考链接和检查代码)

参考 Here 并感谢 volpav 它帮助了我很久。

如果有人在寻找working sample,请检查here

【讨论】:

  • 感谢您的建议。我曾尝试使用 volpav 的文件版本来使用 getDetails,但出现错误“未定义验证”。
  • 你在这个链接中复制了完整的js代码吗? github.com/volpav/Knockout-Validation/blob/master/Src/…
  • 是的,但我还有其他一些错误。我已经使用 context.validatables 而不是 validatables() 解决了以前的 js 错误的问题 details 对象的信息只能通过说明无效字段的另一个规则来帮助我。但是我怎样才能发现它更简单呢?
  • 你能用我提到的文件为我设置一个示例小提琴,你的虚拟机我可以查看它。欢呼
  • 我通过可观察引用设置了一个很长的字符串,找到了无效字段,我在页面上看到了它。感谢您的帮助 =)
猜你喜欢
  • 1970-01-01
  • 2013-01-12
  • 2014-10-13
  • 2014-02-01
  • 1970-01-01
  • 2015-02-28
  • 2012-02-18
  • 2013-06-22
  • 2012-07-21
相关资源
最近更新 更多