2012-03-01 17 views
62

के साथ अपरिभाषित jQuery UI स्वत: पूर्ण की संपत्ति '_renderItem' सेट नहीं कर सकता है, मैं अपने jQuery UI स्वत: पूर्ण आइटम को HTML के रूप में प्रस्तुत करने के लिए निम्न कोड का उपयोग कर रहा हूं। आइटम स्वत: पूर्ण नियंत्रण में सही ढंग से प्रस्तुत करते हैं, लेकिन मुझे यह जावास्क्रिप्ट त्रुटि मिल रही है और इसे पिछले स्थानांतरित नहीं किया जा सकता है।एचटीएमएल

फ़ायरफ़ॉक्स JavaScript तर्क नहीं बदला जा सका

क्रोम सेट नहीं कर सकता गुण अपरिभाषित

donor.GetFriends(function (response) { 
    // setup message to friends search autocomplete 
    all_friends = []; 
    if (response) { 
     for (var i = 0; i < response.all.length - 1; i++) {     
       all_friends.push({ 
        "label":"<img style='padding-top: 5px; width: 46px; height: 46px;' src='/uploads/profile-pictures/" + 
         response.all[i].image + "'/><br/><strong style='margin-left: 55px; margin-top: -40px; float:left;'>" + 
         response.all[i].firstname + " " + response.all[i].lastname + "</strong>", 

        "value":response.all[i].firstname + " " + response.all[i].lastname, 
        "id":response.all[i].user_id}); 
      } 
     }   

    $('#msg-to').autocomplete({ 
     source:all_friends, 
     select:function (event, ui) {    
      // set the id of the user to send a message to 
      mail_message_to_id = ui.item.id; 
     } 

    }).data("autocomplete")._renderItem = function (ul, item) { 
     return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append($("<a></a>").html(item.label)) 
      .appendTo(ul); 
    }; 
}); 

सुनिश्चित नहीं की '_renderItem' कारण है कि यह इस त्रुटि फेंक, या क्या मैं करने के लिए क्या करना है है इसे पिछले प्राप्त करें ... किसी भी मदद की सराहना की है।

+0

क्या पृष्ठ पर आईडी '# msg -'' वाला कोई तत्व है? –

+0

हां वहाँ है ... $ ("# msg-to") एक टेक्स्ट इनपुट फ़ील्ड है, जो .autocomplete बाध्यकारी है। –

+1

इससे मदद मिली: http://stackoverflow.com/questions/5590776/why-am-i-getting-this-js-error – Ilmars

उत्तर

175

के बजाय .data("ui-autocomplete") होने के लिए के बाद से मैं सिर्फ शामिल हो गए है और इसके बाद के संस्करण की पोस्ट drcforbin पर टिप्पणी नहीं कर सकता, मुझे अपना जवाब जोड़ना है।

drcforbin सही है, हालांकि यह वास्तव में ओपी के मुकाबले एक अलग समस्या है। अभी भी जारी किए गए jQuery UI के नए संस्करण के कारण इस थ्रेड पर आने वाले किसी भी व्यक्ति को शायद इस समस्या का सामना करना पड़ रहा है। स्वत: पूर्ण से संबंधित कुछ नामकरण सम्मेलन v1.9 में jQuery UI में बहिष्कृत किए गए थे और v1.10 में पूरी तरह से हटा दिए गए हैं (http://jqueryui.com/upgrade-guide/1.10/#autocomplete देखें)।

क्या है भ्रामक है, तथापि, यह है कि वे केवल item.autocomplete डेटा टैग को ui-पूर्ण-आइटम से संक्रमण का उल्लेख है, लेकिन स्वत: पूर्ण डेटा टैग भी UI- को नाम दिया गया है स्वतः पूर्ण। और यह और भी भ्रमित है क्योंकि डेमो अभी भी पुराने वाक्यविन्यास का उपयोग कर रहे हैं (और इस प्रकार टूटा हुआ है)।

निम्नलिखित क्या कस्टम डेटा में jQuery यूआई 1.10.0 के लिए _renderItem समारोह डेमो यहाँ में बदलने की जरूरत है: http://jqueryui.com/autocomplete/#custom-data

मूल कोड:

.data("autocomplete")._renderItem = function(ul, item) { 
    return $("<li>") 
    .data("item.autocomplete", item) 
    .append("<a>" + item.label + "<br>" + item.desc + "</a>") 
    .appendTo(ul); 
}; 

फिक्स्ड कोड:

.data("ui-autocomplete")._renderItem = function(ul, item) { 
    return $("<li>") 
    .data("ui-autocomplete-item", item) 
    .append("<a>" + item.label + "<br>" + item.desc + "</a>") 
    .appendTo(ul); 
}; 

स्वत: पूर्ण और item.autoco दोनों के लिए परिवर्तनों पर ध्यान दें mplete। मैंने सत्यापित किया है कि यह मेरी अपनी परियोजनाओं में काम करता है।

+1

+1, धन्यवाद। मुझे आपके दूसरे पैराग्राफ में सटीक समस्या का उल्लेख हो रहा था। समस्या सुलझ गयी! –

+0

महान स्पष्टीकरण ... इस तरह के रूप में विस्तृत कुछ के लिए देख रहे हैं। धन्यवाद – Greg

+0

ग्रेट समाधान। पूरी तरह से मेरे लिए काम किया! – user1429980

25

मैं एक ही समस्या में पड़ गए ... बाद के संस्करणों में लगता है, यह मुझे लगता है कि .data("autocomplete")

+2

मुझे अंतर नहीं दिखता – mac10688

+2

धन्यवाद, इसने मेरे लिए समस्या हल की – Tomba

1

jQuery ui के संस्करण के आधार पर आप इसे या तो हो जाएगा "स्वत: पूर्ण" या "ui-स्वत: पूर्ण" का उपयोग कर रहे हैं, मैं समस्या (~ ln 78-85)

ठीक करने के लिए बता गया प्लगइन करने के लिए इस अद्यतन किए गए
var autoComplete = input.data("ui-autocomplete"); 
if(typeof(autoComplete) == "undefined") 
    autoComplete = input.data("autocomplete"); 

autoComplete._renderItem = function(ul, item) { 

...

6

मैं jQuery 1.10.2 उपयोग कर रहा हूँ और इसे का उपयोग काम:

.data("custom-catcomplete")._renderItem = function(ul, item) { 
    return $("<li>") 
    .data("ui-autocomplete-item", item) 
    .append("<a>" + item.label + "<br>" + item.desc + "</a>") 
    .appendTo(ul); 
}; 
+0

धन्यवाद, कोड के आपके बिट ने मदद की मुझे अंतहीन विकल्पों की कोशिश करने के बाद ^^ – azzy81

5

और अब, jQuery-2.0 के साथ।0, यह आपके नए मॉड्यूल का नाम है, लेकिन "।" को बदल रहा है। (डॉट) "-" (डैश) द्वारा:

jQuery.widget ('custom.catcomplete', jQuery.ui.autocomplete, { 
    '_renderMenu': function (ul, items) { 
     // some work here 
    } 
}); 

$this.catcomplete({ 
    // options 
}).data('custom-catcomplete')._renderItem = function (ul, item) {} 
3

इस पोस्ट में फंसे किसी भी व्यक्ति के लिए पोस्टिंग।

यह त्रुटि स्वयं प्रकट होगी यदि आप दस्तावेज़ तैयार ईवेंट के अंदर .autocomplete नहीं डालते हैं।

नीचे कोड विफल हो जाएगा:

<script type="text/javascript"> 
    $('#msg-to').autocomplete({ 
     source:all_friends, 
     select:function (event, ui) {    
      // set the id of the user to send a message to 
      mail_message_to_id = ui.item.id; 
     } 

    }).data("autocomplete")._renderItem = function (ul, item) { 
     return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append($("<a></a>").html(item.label)) 
      .appendTo(ul); 
    }; 
</script> 

जबकि नीचे कोड काम करेगा:

<script type="text/javascript"> 
    $(function(){ 
     $('#msg-to').autocomplete({ 
      source:all_friends, 
      select:function (event, ui) {    
       // set the id of the user to send a message to 
       mail_message_to_id = ui.item.id; 
      } 

     }).data("autocomplete")._renderItem = function (ul, item) { 
      return $("<li></li>") 
       .data("item.autocomplete", item) 
       .append($("<a></a>").html(item.label)) 
       .appendTo(ul); 
     }; 
    }); 
</script> 
+0

यह मेरे लिए रीढ़ की हड्डी के एप – jakeed1

+0

में काम करता है, यह मेरी "कारण सेट नहीं कर सकता" _rnderItem 'अनिर्धारित नहीं है "जैस्मीन स्पेक –

7

मैं जानता हूँ कि मैं अपने जवाब के साथ देर हो रही है, लेकिन भविष्य में लोगों को अभी भी करते हैं

 
.data("ui-autocomplete-item", item) 

तो काम की कोशिश करने के लिए मिल इस insted

$(document).ready(function(){ 
$('#search-id').autocomplete({ 
    source:"search.php", 
    minLength:1,  
    create: function() { 
    $(this).data('ui-autocomplete')._renderItem = function (ul, item) { 
     return $('<li>') 
     .append("<a>" + item.value + ' | ' + item.label + "</a>") 
     .appendTo(ul); 
    }; 
    } 
}) 
}); 

यह मेरे लिए काम किया है और मैं लॉगिन Funktion के साथ समस्या हो रही थी .. मैं के लिए लॉग इन नहीं कर सकता है, क्योंकि यह कहा

 
Uncaught TypeError: Cannot set property '_renderItem' of undefined 

आशा इस मदद करता है किसी को

/कहीं

:)
+0

आइटम के बाद एक प्लस (+) चिह्न के अंदर है। लेबल गायब है । – Ali

+0

@ShafaqatAli धन्यवाद! – Kahin