2012-11-29 9 views
5

मेरे पास मेरे पृष्ठ पर एक स्वतः पूर्ण है जो डेटा को सही तरीके से प्राप्त करता है और प्रदर्शित करता है .... जब यह ठीक से काम करना बंद कर देता है तो चुनिंदा घटना पर है ....jQuery यूआई -> स्वत: पूर्ण -> चालू करें -> ui आइटम अपरिभाषित है

$("#fld_search1").catcomplete({ 
     delay: 50, 
     minLength: 2, 
     open: function(e, ui){ 
      if(searching) return; 
      //console.log($(this).data('catcomplete')); 
      var acData = $(this).data('catcomplete'); 
      var styledTerm = '<strong>%s</strong>'.replace('%s', acData.term); 


      acData.menu 
       .element 
       .find('li a') 
       .each(function() { 
        var me = $(this); 
        me.html(me.text().replace(acData.term, styledTerm)); 
       }); 
      //return match.replace(new RegExp("("+keywords+")", "gi"),'<i>$1</i>'); 
     }, 
     select: function(event, ui) { 
      var I = ui.item; 
      top.console.log(ui); 
      $("#fld_search1").catcomplete("close"); 

      $('#fld_search1').val(I.name); 
      window.location = '/podjetje/'+I.value+'.html'; 
      //$('#frm_company_id').val(I.value); 
      return false; 
     }, 
     source: function(request, response) { 


      search_term = request.term; 

      if (search_term in cache) { 
       response(cache[ tesearch_termrm ]); 
       return; 
      } 


      var suggest_url = "/companies/find_company.json"; 


      $.ajax({ 
       url: suggest_url, 
       dataType: "json", 
       type : "POST", 
       data: { 
        owner: request.term 
       }, 
       success: function(data) { 
        response($.map(data, function(item) { 
         var alabel = item.label.replace(
           new RegExp('(' + 
            $.ui.autocomplete.escapeRegex(request.term) + 
            ')'), 
          "<b>$1</b>"); 
         return { 
          value: item.value, 
          label: item.label, 
          name: item.name, 
          category: item.category 
         } 
        })); 
       } 
      }); 


     } 
    }); 

तो यह ui वस्तु ...

अगर मैं top.console.log (यूआई) कर मैं एक property- के साथ एक वस्तु नहीं मिलता है> आइटम ... कि अनिर्धारित रहता है। .. इसलिए यदि मैं मूल्य को लॉग करता हूं तो मुझे अपरिभाषित हो जाता है ... यह कैसे संभव है?

इस अगर मैं इसे बदल सकते हैं और 1.9.2 मेनू हमेशा माउसओवर पर बंद कर देता है का उपयोग करें ... अगर मैं ऑटोफोकस उपयोग करें, यह खोल तक नहीं करता है 1.9.1

में है!

उत्तर

27

आज मुझे अपरिभाषित ui.item संपत्ति के साथ एक ही समस्या थी। कुछ डीबगिंग के बाद मुझे समाधान मिला। JQuery UI टीम ने Autocomplete with categories उदाहरण कोड को थोड़ा बदल दिया। जब आप उदाहरण स्रोत कोड देखें आप देखेंगे:

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

हुआ करता था (पूर्व 1.9 संस्करणों में) that._renderItemData(ul, item); के साथ लाइन that._renderItem(ul, item);। यह भी देखें: bug #8560। लेकिन इसका उल्लेख 1.9 Upgrade Guide में नहीं किया गया है।

इसलिए मैंने _renderItemData(...,...) फ़ंक्शन का उपयोग करने के लिए अपनी प्लगइन बदल दी और समस्या को हल किया।

आशा है कि इससे मदद मिलती है!

+1

आपके लिए +1, आपका उत्तर मेरा समय बचाएं। मैंने अभी JQuery UI को 1.8.3 से 1.10.3 तक अपग्रेड किया है और 'ui.item' में फ़ंक्शन को' अपरिभाषित 'कर रहा था। 'That._renderItem (उल, आइटम)' को '_.renderItemData (उल, आइटम) 'बदलने के बाद यह फिर से काम कर रहा है। –

+0

वाह धन्यवाद आदमी, आपने आज मुझे बचाया :) – 360Airwalk

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