2010-06-30 59 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