动态表单上的淘汰验证

本文关键字:淘汰 验证 表单 动态 | 更新日期: 2023-09-27 17:59:00

我有一个表单,其中的字段根据某些条件可见(此处不相关)。实际情况是,我希望根据字段的可见性对其进行验证。

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

这里有一个例子:

<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中,我有一个具有可观察属性的视图模型来控制表单字段的可见性。如果复选框处于启用状态,则会显示电子邮件输入,因此是必需的。但如果未选中,则验证规则应允许空的电子邮件输入。

所以在我的视图模型中,我会有类似的东西

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

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

感谢

动态表单上的淘汰验证

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

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