首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套集合上的敲除验证

问嵌套集合上的敲除验证
EN

Stack Overflow用户
提问于 2015-12-09 22:09:59
回答 1查看 224关注 0票数 0

我正在使用Knockoutjs.com为“联系人编辑器”提供的示例。

http://jsfiddle.net/rniemeyer/gZC5k/

我正在使用完全相同的代码在我的网站上,现在需要验证丢失的信息提交。

下面是我想在表单上实现的验证规则:

  1. 如果任何字段(所需的名称和电话)为空白,则不允许提交表单。
  2. 如果一个名字没有任何电话号码(没有孩子的父母),不允许提交表单。
  3. 如果没有名称,则不允许提交表单(完全空白的表单没有父级)

我唯一能想到的是如何分析那些缺失的名字:

代码语言:javascript
复制
contacts().length = 0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-10 08:49:58

您可以在视图模型中引入附加标志,例如"isValid":

代码语言:javascript
复制
self.isValid = ko.computed(function() {
    if(self.contacts().length === 0) {
    return false;
  }
  var allContactsHaveNames = self.contacts().filter(function(contact) {
    return contact.firstName() !== "" && contact.lastName() !== "";
  }).length === self.contacts().length;
  return allContactsHaveNames;
});

在里面做所有检查。

当然,这需要对标记进行更改:

代码语言:javascript
复制
<button data-bind='click: save, enable: isValid'>Save to JSON</button>

以及可观察到的"firstName“和"lastName”字段:

ko.observableArray(ko.utils.arrayMap(contacts,函数(Contact){返回{ firstName: ko.observable(contact.firstName),lastName: ko.observable(contact.lastName),电话: ko.observableArray(contact.phones) };});

代码语言:javascript
复制
self.addContact = function() {
    self.contacts.push({
        firstName: ko.observable(""),
        lastName: ko.observable(""),
        phones: ko.observableArray()
    });
};

任何额外的检查都可以添加到"isValid“复合函数中。

您可以检查更新的小提琴。

如@Sam.C在注释中所建议的那样,您可以使用Knockout验证。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34189938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档