我正在使用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."));
答案 0 :(得分:1)
是否可以延迟特定元素的特定规则的验证?
不,我不这么认为。 jQuery验证插件不支持异步函数。
但是,我还没有想出如何从setTimeout函数中返回验证条件。
这是不可能的 - 你不能return
来自异步回调的值。您需要提供回调或返回承诺,但这需要通过接受验证回调的函数来支持。