gpt4 book ai didi

jquery-validate - 使用 jQuery Autocomplete 和 Validator onBlur 计时问题

转载 作者:行者123 更新时间:2023-12-04 07:13:25 25 4
gpt4 key购买 nike

这是我的问题,我在实现 jQuery.Autocomplete 和 jQuery.validate 的表单中有一个输入元素,除了单击自动完成列表中的一个元素来选择它之外,所有这些都正常工作。

发生的情况是验证发生在自动完成设置其值之前。因为验证发生在 onBlur 上,并且您刚刚单击了自动完成列表中的一个项目,所以在输入填充其新值之前的一瞬间,模糊触发和验证发生。

如果它是客户端,我不介意双重验证,但我碰巧在这个字段上执行昂贵的远程 ajax 验证,所以我真的很想以正确的方式解决这个问题。

我的第一个想法是通过一个 10 毫秒后超时的函数来代理所有验证 onBlur 事件,本质上是翻转事件顺序。但是,我认为,这意味着撕毁 jQuery.Validate.js 代码,我宁愿不这样做。

有任何想法吗?

最佳答案

我能够完成这项工作,但可能不像我希望的那样优雅。理想情况下,我希望在超时闭包中调用 onfocusout 的原型(prototype)或默认版本,但我无法弄清楚如何从该范围内引用它。

我采用的方法是使用其代码复制/粘贴到超时闭包来覆盖 onfocusout 方法。唯一的其他调整是将引用从 this 更改为 _this 以在超时关闭的不同范围内工作。

$("#aspnetForm").validate({
success: "valid",
onkeyup: "false",
onfocusout:
function(element) {
//Delay validation so autocomplete can fill field.
var _this = this;
setTimeout(function() {
if (!_this.checkable(element) && (element.name in _this.submitted || !_this.optional(element)))
_this.element(element);
_this = null;
}, 250);
}
});

随时发布改进。

关于jquery-validate - 使用 jQuery Autocomplete 和 Validator onBlur 计时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com