动态表单上的Knockout验证

时间:2013-02-13 13:34:24

标签: c# asp.net-mvc knockout.js knockout-validation

我有一个表单,其中包含根据某些条件显示的字段(此处不相关)。 发生的事情是我希望根据其可见性对字段进行验证。

到目前为止,我还没有设法更改或禁用规则(例如必需的)。

以下是一个例子:

<form>
 <input type='text' data-bind='{value : name}' />
 <span class='errorMsg' data-bind='validationMessage: name'></span>
 <input type='text' data-bind='{value : email, visible: isEmailVisible}' />
 <span class='errorMsg' data-bind='validationMessage: email'></span>
 <input type='checkbox' value='true' text='Receive an email' />
 <input type='submit' value='Send' />
</form>

在我的js中,我有一个带有可观察属性的viewmodel来控制表单字段的可见性。选中此复选框后,将显示电子邮件输入,因此需要输入。但是,如果未选中,则验证规则应允许空的电子邮件输入。

所以在我的视图模型中,我会有像

这样的东西
self.email = ko.observable().extend({ required : {message : 'Should not be empty'}});

问题是:如何更改或删除验证规则?

由于

1 个答案:

答案 0 :(得分:4)

似乎有一个onlyIf参数可以与验证器一起使用:

ko.observable().extend({ required : {message : 'Should not be empty', 
    onlyIf: [viewModel.Observable bound to checkbox]}});