Viewmodel组件上的KnockoutJS验证插件

时间:2012-07-07 00:34:46

标签: validation knockout.js

我的viewmodel有一个ko.observable成员,用于存储对话状态对象。每个对话框对象都有对应于对话框中输入字段的各种成员。我想使用KnockoutJS验证插件为对话框添加验证。

但是,我不希望将验证添加到我的整个视图模型中,而只是添加到我的对话框中。当我尝试扩展这样的对话框时:

    this.dialog = ko.observable(new RegistrationDialog(self)).extend({validatable: true});

事情无法正常工作:未定义isValid()和errors()方法,并且验证无法正常工作。我创建了一个jsfiddle来说明这一点。当我按下开始按钮时,对话框打开(原谅缺少CSS),但按Enter键不会生成任何错误消息。电子邮件验证也无法正常工作,显示消息“确实不是正确的电子邮件地址。”

2 个答案:

答案 0 :(得分:2)

我会选择documentation

this.dialog = ko.validatedObservable(new RegistrationDialog(this));

然后修复你的小提琴中的一些错误:

  • 数据盲
  • 点击表单上的处理程序(而不是提交,我假设)
  • 在注册按钮上enable: isValid应该是enable: isValid()(由于修复了表单提交绑定,我也删除了点击绑定)

我认为就是这样。 Updated fiddle here

答案 1 :(得分:1)

这是一个工作版本:

http://jsfiddle.net/t9zLH/8/

我在内部添加了一个错误组,并在允许注册方法成功之前检查它,否则我会显示错误。