从setTimeout函数中返回值

时间:2014-02-15 19:24:31

标签: javascript jquery jquery-validate

我正在使用Google地图自动填充来设置输入的值,并使用http://jqueryvalidation.org/来验证最小长度。问题是谷歌地图自动完成(和任何异步插件)需要一些时间来填充输入,因为它需要访问远程服务器,并且jQuery Validation Plugin在填充值之前进行验证。有关演示,请参阅http://jsbin.com/digiz/1

是否可以延迟特定元素的特定规则的验证?

如果没有,是否可以创建一个短暂延迟的新验证方法?例如,请参阅下面的我的微弱尝试。第一个console.log在“点击”Google提供的结果之前仅显示输入的字符,但第二个显示更新的值,因此我知道我在正确的轨道上(我希望!)。但是,我没有想出如何从setTimeout函数中返回验证条件。

任何帮助将不胜感激!

jQuery.validator.addMethod("minlengthDelay", function(value, element, params) {
    console.log(element.value);
    var t=this;
    window.setTimeout(function(){
        console.log(element.value);
        return t.optional(element) || $.trim(element.value).length>=params;
        }, 100);
    }, jQuery.format("Please enter at least {0} characters."));

1 个答案:

答案 0 :(得分:1)

  

是否可以延迟特定元素的特定规则的验证?

不,我不这么认为。 jQuery验证插件不支持异步函数。

  

但是,我还没有想出如何从setTimeout函数中返回验证条件。

这是不可能的 - 你不能return来自异步回调的值。您需要提供回调或返回承诺,但这需要通过接受验证回调的函数来支持。

相关问题