【问题标题】:KnockoutJS dynamic form validationKnockoutJS 动态表单验证
【发布时间】:2014-01-28 08:53:36
【问题描述】:

我有一个具有三个字段组的表单,单击“添加新”按钮将添加其他三个字段组。这部分工作得很好。

我想添加验证,因此需要所有三个字段才能添加新组。

这里的代码可以参考:http://jsfiddle.net/5g8Xc/

var ContactsModel = function(contacts) {
    var self = this;
    self.contacts = ko.observableArray(ko.utils.arrayMap(contacts, function(contact) {
        return { firstName: contact.firstName, fathersLast: contact.fathersLast, country: contact.country };
    }));

    self.addContact = function() {
        self.contacts.push({
            firstName: "",
            fathersLast: "",
            country: ""
        });
    };

    self.removeContact = function(contact) {
        self.contacts.remove(contact);
    };
};

关于如何实施此验证的任何线索?我试图使用 jquery 验证来做到这一点,但我认为使用 KnockoutJS 是可能的。

感谢任何建议。

【问题讨论】:

标签: json validation knockout.js knockout-validation


【解决方案1】:

如前所述,the validation plugin 将是最优雅、更少重新发明的解决方案。

编辑:在评论implementation使用验证插件之后

除此之外,您还有几个选择。

  • 如果您确信联系人对象将始终只包含必填字段,则将迭代联系人的属性不是非常健壮的实现,以确保每个属性都有一些价值。

  • 更健壮一些,但仍然缺乏插件的优雅,实现将是维护一个必填字段数组并使用该数组进行验证。您可以参考my example 进行此设置。本质上,每个必需的属性都映射到可观察对象。对任何可观察属性值的更改都会触发(通过subscription)对computed 中使用的虚拟可观察对象的突变调用。这是必需的,因为计算不能调用valueHasMutated。突变调用触发计算重新评估,从而更新 UI。

【讨论】:

  • 我可以让它工作,但添加的新元素不会跟踪验证...jsfiddle.net/8Hude/6任何线索?
  • 你很亲密。 Here 是你所追求的,我相信。
  • 我修好了。问题是由于联系人是validated observable 而不是实际的contact。我只是将 isValid 封装在联系人对象内的包装方法中。
  • 嗨,当我按下添加新按钮时,如何显示错误?现在它在单击按钮时不起作用。非常感谢
  • 联系方式需要ko.validation.group(self).showAllMessages(); 电话。添加到小提琴中。
猜你喜欢
  • 2013-06-05
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 2013-11-29
相关资源
最近更新 更多