2010-06-23 68 views

回答

40

可以使用的代碼下面的行刪除自動完成的行爲:

if (jQuery(control).data('autocomplete')) { 
    jQuery(control).autocomplete("destroy"); 
    jQuery(control).removeData('autocomplete'); 
} 
+0

非常感謝!這是我在幾個小時後的解決方案。有用! – 2012-11-22 12:37:43

+0

我認爲這行關於removeData是不需要的。我測試了,在做$(control).autocomplete('destroy')後,$(control).data('autocomplete')返回undefined – Fractalf 2013-12-02 16:22:41

+0

我使用的是(1.11),.data()總是返回undefined。忽略條件並且圍繞調用自動完成(「destroy」)放置try/catch會更安全。 – cleong 2014-07-17 09:17:38

0

該插件將自己連接到<input>相當緊密。如果是我的網頁,我想我只需要兩個標籤具有相同的「名稱」,一個帶有自動完成,另一個沒有。當我想在它們之間切換時,我會使其中一個禁用並隱藏,並啓用/顯示另一個。 (編輯哦,並且確保字段的值在它們切換時來回複製)

0

如果向元素中添加類似「EnableAC」的類,則可以將該類定位到自動完成。當您完成自動填充並希望將其禁用時,可以刪除該類。

爲什麼要禁用該功能?如果他們想要更改他們的選擇並且自動完成功能不會觸發,它可能會混淆您的用戶。

+1

我不確定這會起作用,因爲一旦插件綁定到'',將會有幾個事件處理程序保留。 – Pointy 2010-06-23 14:21:29

0

我剛剛簡要了解了插件的js文件。

有似乎是jquery.autocomplete.js插件的初始化過程中一個javascript線(21號)所述始發源輸入設置爲:

input.autocompleter = me; 

未經測試,也許你可以簡單地再請調用以下內容來刪除插件和原始輸入之間的鏈接?

$('#<your input id>').autocompleter = null; 
+0

*可能*工作,但該腳本還綁定了一堆事件處理程序。 – Pointy 2010-06-23 14:20:50

+0

是的,就像我說的,我沒有太多機會去研究它,因爲我很匆忙,但它可能是P Coder研究的一個很好的起點。我可以看到插件腳本中沒有本地銷燬功能。 – 2010-06-24 10:38:41

0

我只是想 $( '#')自動完成= NULL; 它工作。 我讓蒼蠅的名字改變,結果不會顯示,現在它顯示。 舊不變名稱將顯示之前現在新的人做

8

我發現的最簡單,最安全的方法是:

$(control).autocomplete({source: []}); 

另外,如之前提到的,這也適用:

$(control).autocomplete("destroy"); 

如果你確定你的控件有一個自動完成處理程序集。

+0

這裏的第一個選項對我來說非常完美。我動態地生成「促銷代碼」,選擇一個後,我想刪除選擇其他任何東西的能力,除非添加的促銷被刪除,所以:$('#tags_promo')。autocomplete('option','source ',[]);添加促銷和$('#tags_promo')。autocomplete('option','source',availablePromo);在刪除。謝謝你,我試圖做各種複雜的東西,而不是這個! – kyle 2013-09-10 15:10:56

+0

第一個選項的魅力。 – 2014-06-16 21:45:52

+0

正是我需要的 – 2016-07-28 13:42:12

0

在最新版本的jQuery UI(1.12)中,即使存在自動完成數據,$(control).data('autocomplete')也不會返回true。

取而代之,檢查ui-autocomplete-input類的存在是否返回true。

以下應該就夠了,我相信。

if ($(control).hasClass('ui-autocomplete-input')) { 
    $(control).autocomplete("destroy"); 
}