Javascript onBlur事件覆盖jQuery UI事件

Javascript onBlur事件覆盖jQuery UI事件,javascript,jquery,dom,javascript-events,Javascript,Jquery,Dom,Javascript Events,我有一个使用jQueryUI1.8.4自动完成连接的文本框。我连接了select事件,因此当用户从列表中选择一个项目时,它调用另一个javascript函数,该函数发出ajax请求以保存数据并更新XML文档 在同一个文本框上有一个onBlur事件,因此,如果用户在文本框中手动键入数据并在文本框中进行制表,而不选择自动完成项,则它也会执行更新 当用户从“自动完成”列表中选择一个项目时,会触发onBlur,这会覆盖select事件,因此唯一更新的数据是用户键入的文本框中的内容,并且由于select事

我有一个使用jQueryUI1.8.4自动完成连接的文本框。我连接了select事件,因此当用户从列表中选择一个项目时,它调用另一个javascript函数,该函数发出ajax请求以保存数据并更新XML文档

在同一个文本框上有一个onBlur事件,因此,如果用户在文本框中手动键入数据并在文本框中进行制表,而不选择自动完成项,则它也会执行更新

当用户从“自动完成”列表中选择一个项目时,会触发onBlur,这会覆盖select事件,因此唯一更新的数据是用户键入的文本框中的内容,并且由于select事件不会触发文本框的内容,因此不会更新文本框的内容

我尝试过使用change事件,但结果相同

有没有一种方法可以确保触发select事件,并在用户输入值而不是选择值的情况下实现一些模拟onBlur的功能


谢谢。

问题是当用户与“自动完成”菜单交互时,文本框会失去焦点并触发模糊事件。除非组件告诉您,否则无法真正检测用户是否在自动完成控件中

如果您正在使用的autocomplete控件没有方法告诉您何时关闭,那么您可能需要在启动代码之前使用setTimeout等待一段时间

我认为onselect总是被解雇 “但是”它仅在文本框的onblur事件之后触发

只有当您使用鼠标选择自动完成项,而不是通过键盘选择项时,才会发生这种情况

根据是否进行了鼠标单击或键盘选择,您可以使用选择事件撤消在onblur上进行的更新

select: function (event, ui) {

     if (event.originalEvent.originalEvent.type == 'click') {
          //undo the onblur event happened by an ajax call here
          //$("#txtbox").val() will still be available to do an undo
     }

     //do the actual onselect function here
}

在调用
.autocomplete()
之后,您是否尝试过绑定
blur
事件?从autocomplete列表中选择某个内容的简单操作会导致onBlur触发。我理解这一点,但这两个操作都会关闭事件处理程序,并按绑定顺序执行:)谢谢!你的建议把我带到了可以解决问题的地方。我综合运用了这两种回答。我以不同的顺序将事件绑定,这在一定程度上起了作用。这些事件正在调用另一个同样使用AJAX的方法。由于这两个事件现在都触发了,外部脚本(不是我的)给出了一个not ready错误。我使用了一个setTimeout来防止他们同时请求时互相碰撞。谢谢你们俩!!!