淘汰验证用户定义的规则

时间:2013-08-05 14:50:43

标签: javascript mvvm knockout-validation

我正在使用敲除验证来验证表单。每个字段都有一组自定义规则。

在我的应用程序中,管理员应该有权从特定字段的预定义规则集中选择一些规则。我将为每个输入字段设置按钮,该字段将打开一个模式,其中将显示所有规则是一个复选框,管理员应该能够从中选择定义自定义参数消息

我的问题是:如何定义规则然后将它们传递给ko.observable.extend(rules),以便我可以在应用程序视图中更改我验证的规则。

我尝试将它们作为字符串发送但没有成功:

var lastNameRules = '{ minLength: 2, required: true }';
var lastName = ko.observable().extend(lastNameRules);

1 个答案:

答案 0 :(得分:0)

我设法让它工作,所以我发布了解决方案。我将数组中的规则声明为结构,然后将每个规则应用于observable:

var rules = [{ required: true }, { minLength: 3 }, { maxLength: 10 }];

    for (var i = 0; i < rules.length; i++) {
        lastName.extend(rules[i]);
    }

这样就实现了所有规则。

编辑:其他方法是将一些规则推送到observable的规则数组中:

lastName.rules().push({ rule: "email", params: true });

这样,在添加规则之前必须声明 extend ,因为添加到observable的附加功能。否则,规则数组将不会作为observable中的字段。