2012-06-21 118 views
0

排序建立在一個問題我剛纔問herejQuery的自動完成組合框類別 - 搜索OPTGROUP標籤

我使用jQuery用戶界面自動完成創建一個自動完成表單。在您的幫助下,我已成功地將它的組合框和類別選項組合在一起。現在想到我正在努力把它變成另一個級別。

我想要做的是能夠讓組合框還搜索optgroup標籤以及選項文本。如果文本與整個類別顯示的optgroup標籤相匹配,但它仍然會搜索選項文本。

我猜測編輯需要在下面的塊中進行。

response(select.find("option").map(function() { 
        var text = $(this).text(); 
        if (this.value && (!request.term || matcher.test(text))) return { 
         label: text.replace(
         new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"), 
         value: text, 
         option: this, 
         category: $(this).closest("optgroup").attr("label") 
        };    
       }).get()); 

jsfiddle

+0

很酷的想法!那麼是什麼阻止你這樣做呢? – hakre

+0

我的小腦袋。我不知道該怎麼去做。 –

+0

那麼這很難回答,我的意思是我們不想建議你得到一個新的大腦,對吧? ;)因此,儘量找出你遇到障礙的地方並分享你的問題。 – hakre

回答

0

你看準碼的右側部分。下面是修改後的版本,看起來在類別,以及:

response(select.find("option").map(function() { 
    var text = $(this).text(), 
     category = $(this).closest("optgroup").attr("label"); 
    if(this.value && (!request.term || matcher.test(text) || matcher.test(category))) return { 
     label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"), 
     value: text, 
     option: this, 
     category: category.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>") 
    }; 
}).get()); 
  • 另外的選項文本(matcher.test(text))匹配的,我也儘量配合選項組標籤:matcher.test(category)
  • 我還添加了一個正則表達式替換,以強調類別中匹配的文本。

(我不能讓這最後的修飾工作my update of your jsfiddle example,但它爲我工作的項目的偉大工程)