Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery UI自动完成:如何让“更改”事件提前触发?_Jquery_Jquery Ui_Jquery Ui Autocomplete - Fatal编程技术网

jQuery UI自动完成:如何让“更改”事件提前触发?

jQuery UI自动完成:如何让“更改”事件提前触发?,jquery,jquery-ui,jquery-ui-autocomplete,Jquery,Jquery Ui,Jquery Ui Autocomplete,听起来好像更改事件应该在您选择一个项目后触发,但它似乎是在模糊上触发的,但只有在输入发生更改时才会触发 选择OTOH激发太早,它会在更新输入文本之前激发 我想在用户选择一个项目后,或者在用户键入一些内容并像通常的更改事件那样切换焦点后,立即对输入进行处理 我该怎么做呢?没关系,我想出来了。我们可以欺骗: select: function(event,ui) { this.value=ui.item.value; $(this).trigger('change');

听起来好像更改事件应该在您选择一个项目后触发,但它似乎是在模糊上触发的,但只有在输入发生更改时才会触发

选择OTOH激发太早,它会在更新输入文本之前激发

我想在用户选择一个项目后,或者在用户键入一些内容并像通常的更改事件那样切换焦点后,立即对输入进行处理


我该怎么做呢?

没关系,我想出来了。我们可以欺骗:

select: function(event,ui) { 
    this.value=ui.item.value; 
    $(this).trigger('change'); 
    return false; 
}

手动设置输入值,然后手动触发更改事件,并返回false,这样就不用麻烦设置两次输入。

文档中说明ui.item引用了新选择的值。你能用这种方法得到价值吗?更改项也总是在关闭事件之后触发,这是您提到的在onblur事件之前不触发的。@Ben:关闭事件在onblur事件之前触发。是的,我可以利用ui.item,但接下来我必须处理两种情况,即用户键入某个内容以引起更改,以及用户选择某个项目以不同方式访问数据。除非我们像我一样作弊。但是现在你提到了它,数据似乎在关闭事件触发之前得到了更新,所以我也可以在那里触发更改。有趣的是,它说当列表被隐藏时,不必与更改一起发生。因为这两个事件不会同时触发,即使它们都发生了。我意识到,在onblur之前,关闭事件会触发。我想也许你认为它们是相关的,因为你点击了,这显然会导致两个事件都被触发。下面的解决方案很好,很高兴你找到了。@Ben:是的,我确实认为他们会一个接一个地开火。i、 例如,当你点击一个项目时,我希望关闭事件触发,紧接着是更改事件。但事实并非如此。关闭事件触发,然后更改事件直到您单击其他位置才触发。哦,好吧。我喜欢活动,但我讨厌你真正想要的活动有个洞。你把我从精神崩溃中救了出来!非常感谢。