2011-06-20 63 views
14

http://jqueryui.com/demos/autocomplete/#event-changejQuery UI自动完成:如何让“更改”事件先发生?

这听起来像change事件应该是你选择了一个项目后,火,而是好像火的onblur,但前提是输入已改变。

select OTOH发生得太早,它在输入文本更新之前触发。

我想在用户选择一个项目或者在用户键入内容并切换焦点(就像通常的更改事件)之后立即进行输入。

我该怎么做?

+0

该文档指出新选定的值由ui.item引用。你能以这种方式获得价值吗?变更项目也会在关闭事件之后始终触发,这是您提到的关于在onblur事件之前不会触发的事件。 – Ben

+0

@Ben:close事件在onblur之前被触发。是的,我可以利用'ui.item',但是我必须处理两种情况:用户键入某些内容以引起更改,以及用户选择某个项目的方式不同(必须以不同方式访问数据) 。除非我们欺骗......就像我一样。但现在你提到它,数据似乎在关闭事件触发之前得到更新*,所以我也可以在那里触发更改。 – mpen

+0

它很有趣,它说:“当列表被隐藏 - 不必与改变一起发生。”因为这两个事件不会同时发生,即使它们都发生。 – mpen

回答

20

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

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

更改事件手动设置,手动输入的值,然后触发,并返回false,以便它不打扰设置输入两次。

+0

真棒的想法 – iMatoria

+0

你让我从精神崩溃中解脱出来!谢谢! –

相关问题