2011-04-18 15 views
8

Şu anda, bir ASHX dosyasına başvuran bir metin kutusuna jQuery UI otomatik tamamlama kullanıyorum.Bir jQuery UI otomatik tamamlama öğesine öğe ekleme

Her şey gayretle çalışıyor, hariç sonunda listeye bir öğe eklemek istiyorum: "Öğe bulunamadı? Yeni bir öğe eklemek için buraya tıklayın."

Aşağıdaki kod satırlarını denedim, ancak tüm yaptıkları öğeyi biçimlendirdi, ekleyemedim.

data("catcomplete")._renderItem = function(ul, item) { 
     return $("<li></li>") 
      .data("item.catcomplete", item) 
      .append($("<a class='ui-menu-item'></a>").text(item.label)) 
      .appendTo($('ul').last('.autocomplete-category')); 
    }; 

İpuçları? İpuçları? Mucho gracias! : D

cevap

9

Open event yangınlarından sonra ek girişinizi eklemelisiniz. Bu, her öğeye değil, daha sonra ne olduğunuza göre listeye erişmenizi sağlar; bu, _renderItem'un size erişim sağladığını belirtir. Sen _renderItem ile keman istemiyoruz

$("#myBox").autocomplete({ 
     source: "[URL]", 
     minLength: 2, 
     open: function(event, ui) { 
      $("ul.ui-autocomplete.ui-menu .ui-menu-item:odd").css("background-color","#dedede"); 
     } 
    }); 
+1

Teşekkürler mucho! Onunla oynayacağım. Şimdiye kadar aşağıdakileri yaptım: 'open: işlev (olay, kullanıcı) { //$("ul.ui-autocomplete.ui-menu .ui-menu-item: odd"). -renkli "," #dedede "); var url = "Öğeyi bulamadınız mı? new öğeyi ekleme isteği!"; $ ("ul.ui-autocomplete.ui-menu") ekleyiniz (url); } ' Listenin sonuna bir öğe ekleyebiliyorum gibi görünüyor, şimdi tıklanabilir bir URL olduğundan emin olmalısınız. – curiousdork

+0

Boşver, anladım. :) – curiousdork

1

:

İşte listeye doldurulan girişlerini stil bir örnek. Bu, bir maddeyi veren fn'dir; Öneriler listesindeki her öğe için bir kez çağrılır.

Yapmak istediğiniz şey _renderMenu işlevinin monkeypatch'idir. jQuery UI 1.8.6 orijinal tanımı aşağıdaki gibidir:

_renderMenu: function(ul, items) { 
    var self = this; 
    $.each(items, function(index, item) { 
     self._renderItem(ul, item); 
    }); 
}, 

Muhtemelen temelde jQuery UI diğer sürümleri için aynı.

Bu öğeyi, $.each yaptıktan sonra ek öğe eklemek için yapıştırın.

+0

Bu oldukça kırılgan görünüyor. UI takımı, '_renderMenu' işlevinin nasıl çalıştığını güncellemeye karar verdiyse, '_renderMenu' genel API'nin bir parçası olmadığı için kendi kodunuzu güncellemeniz gerekir. – cdeszaq

+0

Evet, tam olarak, bu yüzden buna * maymun karması * deniyor. Teknikle ilgili daha fazla bilgi için http://stackoverflow.com/questions/2435964/jqueryui-how-can-i-custom-format-the-autocomplete-plug-in-results/2436493#2436493 adresine bakın. – Cheeso