2010-06-30 58 views
0

我正在使用jquery自动完成,并希望它从一个特定的控件一旦从自动完成列表中选择一个特定的控件。我尝试$('#nextelement').focus(),它接收焦点,但焦点立即返回到自动完成控件。自动完成关闭时,如何保持焦点到下一个控件?jQuery自动完成焦点下一个控件

[编辑]我用的是自带的Yii CAutoComplete小部件,它的文档说明自动完成插件我是这个:http://plugins.jquery.com/project/autocompletex

回答

1

你试过:

setTimeout(function() { 
    $('#nextelement').focus(); 
}, 1); 

改变后的焦点当前事件循环已完成?

+1

这样做的工作,但也许有一个更美丽的解决方案:) – Rytis 2010-06-30 15:24:31

+0

哪个自动完成插件你在用吗?其中有几个。有可能明确地告诉插件你不想让它将焦点恢复到输入字段,但是如何做到这一点取决于你使用的插件。 – Pointy 2010-06-30 15:27:12

+0

我没有看到任何方式通过“结果”处理程序覆盖插件的行为。 – Pointy 2010-06-30 15:54:29

0

这给我一个逻辑/使用案例的确切时间和内容的气味。

如果您选择有效的自动完成值,则可以检查自动完成的焦点控件的更改状态。

如果你选择一个,怎么办? (点击,回车,只是改变等)

我会认为使用被关注的元素上的.change()事件将是最好的,然后专注于您的表单中的下一个元素 - 这取决于你的建设你的页 - 兄弟,下一个输入,下一个输入,下一个ID,下一个兄弟在类中,这是最后一个元素等什么重点等。

+0

那么问题很可能是直接添加事件处理程序可能会与插件本身完成的事件处理冲突。对我来说,当你使用这样一些奇特的插件时,最好通过插件本身的API添加处理程序。这个插件有一个“结果”处理程序,我认为。 – Pointy 2010-06-30 15:53:56

+0

是的,但是这对我意味着什么:对更改事件做出反应以专注于其他位置,因此它在自动完成业务完成之后(之后)。 – 2010-07-01 12:11:29