2014-06-27 46 views
0

有關於同一主題的幾個主題,但不完全滿意我!jQuery的自動完成動態源屬性

我想通過一個數據屬性來定義我的自動完成的來源,就像這樣:

<input data-behaviour='autocomplete' data-source='/path/to/source'> 

我無法通過source方法得到它編程:

$ -> 
    $('[data-behaviour~=autocomplete]').autocomplete 
    source: (req, resp) -> 
     return $(this).data('source') 

Here是非工作片段一起玩......

編輯:我找到了一個解決方法是通過create甲基設置它OD:

$ -> 
    $('[data-behaviour~=autocomplete]').autocomplete 
    create: (event, ui) -> 
     $(this).autocomplete("option", "source", $(this).data('source')) 

入住這snippet

但我真的很喜歡這種方式,我不是很肯定更好的可以做

回答

0

我不熟悉的CoffeeScript; jQuery UI自動完成有一個source選項,允許你做一些自定義的東西;你的情況,你可以使用使用request並設置response參數第三個選項(功能)。

功能:該第三變型中,回調,提供了最 靈活性和可用於任何數據源自動填充連接到 。回調得到兩個參數:一個請求對象,具有 單個術語屬性,它指的是當前值在 文本輸入。例如,如果用戶在城市字段 中輸入「新喲」,則自動完成詞將等於「新喲」。響應回調,其中 需要一個參數:向用戶建議的數據。這個數據 應當基於所提供的術語進行過濾,並且可以是任何的 上述用於簡單的本地數據中描述的格式。這一點很重要,當 提供自定義源回調 請求期間處理錯誤。即使您 遇到錯誤,您也必須始終致電回覆回撥。這確保了小部件始終具有 正確的狀態。在本地過濾數據時,您可以使用內置$ .ui.autocomplete.escapeRegex函數的 。它將採用單個 字符串參數並轉義所有正則表達式字符,使結果 安全地傳遞到新的RegExp()。

編號:http://api.jqueryui.com/autocomplete/#option-source

代碼:

$ -> 
    thisEl = $('[data-behaviour~=autocomplete]'); 
    $('[data-behaviour~=autocomplete]').autocomplete 
    source: (req, resp) -> 
     resp(thisEl.data('source')); 

只有你必須實現過濾模式的例子。

演示:http://codepen.io/anon/pen/gjmHn

+0

真棒!我甚至做了這個oneliner:http://codepen.io/jobwat/pen/vGlos - 乾杯 – jobwat