2012-11-16 23 views
9

तो मैं एक कस्टम स्वत: पूर्ण बॉक्स है, जहां स्थानीय डेटा है कि इस तरह दिखता है की एक सरणी डेटा स्रोत है निर्माण कर रहा हूँ:jQuery स्वत: पूर्ण फोकस घटना आइटम अपरिभाषित

{ 
      label: "joe", 
      category: "people" 
} 

मैं में श्रेणियां सक्षम करने के लिए rendermenu समारोह कस्टमाइज़ कर लिया है इसलिए जैसे मेनू:

$("#search").catcomplete(getConfig(all)); 
:

$.widget("custom.catcomplete", $.ui.autocomplete, { 
    _renderMenu: function(ul, items) { 
     var self = this, 
      currentCategory = ""; 
     $.each(items, function(index, item) { 
      if (item.category != currentCategory) { 
       ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>"); 
       currentCategory = item.category; 
      } 
      self._renderItem(ul, item); 
     }); 
    } 
}); 

और मैं सब कुछ initialising रहा द्वारा किया जाता है

जहां getConfig है:

function getConfig(data) { 
// autocomplete box configuration for searchbars 

return { 
    delay: 0, 
    source: function (request, response) { 
     var prune = request.term, 
      arr = prune.split(":"); 

     if (arr.length > 2) { 
      response(); 
     } else { 
      response($.ui.autocomplete.filter(data, arr[arr.length - 1])); 
     } 
    }, 
    select: function (e, ui) { 
     e.preventDefault(); 
     addBit(ui.item); 
     e.originalEvent.stopPropagation(); 
    }, 
    focus: function (e, ui) { 
     //console.log(e); 
     //e.preventDefault(); 
     //console.log(ui); 
     //$('ul.autocomplete li#floatinput input#search').val(ui.item.category + ":" + ui.item.label); 
    }, 
    position: { 
     my: "left top", 
     at: "left bottom", 
     of: $("ul.autocomplete"), 
     collision: "flip flip" 
    } 
} 
} 

अभी तक किसी भी तरह फोकस घटना आइटम को परिभाषित किया है नहीं है। मैंने फ़ोकस फ़ंक्शन से पूरी तरह से छुटकारा पाने की कोशिश की, केवल प्राप्त करने के लिए: Uncaught TypeError: अपरिभाषित की संपत्ति 'मान' नहीं पढ़ सकता। जिसका मतलब है कि डिफ़ॉल्ट व्यवहार काम नहीं करता है।

कोई भी सुझाव आपका स्वागत है!

यहाँ एक बेला मैं उदाहरण देकर स्पष्ट करना>http://jsfiddle.net/ahTCW/3/

उत्तर

16

उपयोग _renderItemData मदद करने के लिए बनाया गया है और jQueryUI के साथ नहीं _renderItem> = 1.9 है:

Uncaught TypeError: Cannot read property 'nodeType' of undefined

यह:

// getconfig 
$.widget("custom.catcomplete", $.ui.autocomplete, { 
    _renderMenu: function(ul, items) { 
     var self = this, 
      currentCategory = ""; 
     $.each(items, function(index, item) { 
      if (item.category != currentCategory) { 
       ul.append("<li style='clear:both'class='ui-autocomplete-category'>" + item.category + "</li>"); 
       currentCategory = item.category; 
      } 
      self._renderItemData(ul, item); 
     }); 
    } 
}); 

आप होने वाली एक और त्रुटि है एक विकल्प ऑब्जेक्ट की of संपत्ति पर जा रहे विकल्प के कारण होता है। ul.autocomplete पृष्ठ पर मौजूद नहीं है जब स्वत: पूर्ण विजेट तत्काल है।

अपडेट किए गए उदाहरण:http://jsfiddle.net/kHNS5/

+0

स्थिति वस्तु हैं अपने वास्तविक वेबसाइट में एक बग नहीं किया गया है, मैं सिर्फ बेला में सभी एचटीएमएल शामिल नहीं किया। लेकिन वैसे भी बहुत बहुत धन्यवाद, मुझे कहीं भी आईआरसी पर जवाब मिला: डी इंटरनेट एक अच्छी जगह है! –

संबंधित मुद्दे