1

根据发布文档,Regula 1.3.0 应该支持异步验证。似乎复合约束能够以某种方式选择异步。这也适用于自定义验证吗?这将是什么语法?

4

1 回答 1

2

我仍在努力完成 1.3 的文档(我目前所拥有的可以在此处获得)。

异步支持可用于自定义约束和复合约束(至少包含一个异步约束)。

定义异步约束的语法非常简单:

regula.custom({
    name: "MyAsyncContraint",
    async: true,
    defaultMessage: "The asynchronous constraint failed.",
    validator: function(params, validator, callback) {
        //Using jQuery as an example
        jQuery.ajax({
            url: myUrl,
            dataType: "jsonp",
            success: function(data) {
                //Use the callback to pass the result of validation back to
                //regula.
                callback(data.pass)
            }
        });
    }
});

没有明确的语法或调用来使复合约束异步。任何包含一个或多个异步的复合约束都是隐式异步的。要验证异步约束(甚至是同步和异步约束的混合),只需将 a 传递callback.validate

regula.validate(function(constraintViolations) {
    ...
});

您也可以使用.validatewith 选项和回调:

regula.validate(options, function(constraintViolations) {
    ...
});
于 2013-11-18T16:53:46.693 回答