हां, अगर आप बंदर-पेटी को पूरा कर सकते हैं।
JQuery UI के v1.8rc3 में शामिल स्वत: पूर्ण विजेट में, सुझावों का पॉपअप स्वतः पूर्ण विजेट के _renderMenu फ़ंक्शन में बनाया गया है। यह फ़ंक्शन इस तरह परिभाषित किया गया है:
_renderMenu: function( ul, items ) {
var self = this;
$.each( items, function( index, item ) {
self._renderItem( ul, item );
});
},
_RenderItem फ़ंक्शन को इस तरह परिभाषित किया गया है:
_renderItem: function( ul, item) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + item.label + "</a>" )
.appendTo( ul );
},
तो आपको जो करने की आवश्यकता है, वह है कि _renderItem अपने स्वयं के निर्माण के साथ fn जो वांछित प्रभाव पैदा करता है। यह तकनीक, एक पुस्तकालय में एक आंतरिक कार्य को पुनर्परिभाषित करने के लिए, मैं सीख गया हूं कि इसे बंदर-पैचिंग कहा जाता है । यहाँ है कि मैंने यह कैसे किया:
function monkeyPatchAutocomplete() {
// don't really need this, but in case I did, I could store it and chain
var oldFn = $.ui.autocomplete.prototype._renderItem;
$.ui.autocomplete.prototype._renderItem = function( ul, item) {
var re = new RegExp("^" + this.term) ;
var t = item.label.replace(re,"<span style='font-weight:bold;color:Blue;'>" +
this.term +
"</span>");
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>" + t + "</a>" )
.appendTo( ul );
};
}
उस फ़ंक्शन को एक बार कॉल करें $(document).ready(...)
।
अब, यह एक हैक है, क्योंकि:
सूची में दिए गए प्रत्येक आइटम के लिए एक regexp obj बनाया गया है। उस regexp obj को सभी वस्तुओं के लिए फिर से इस्तेमाल किया जाना चाहिए।
पूर्ण भाग के प्रारूपण के लिए कोई css वर्ग का उपयोग नहीं किया गया है। यह एक इनलाइन शैली है।
इसका मतलब है कि यदि आपके पास एक ही पृष्ठ पर कई ऑटोकॉम्पलेट्स हैं, तो वे सभी एक ही उपचार प्राप्त करेंगे। एक सीएसएस शैली का समाधान होगा।
... लेकिन यह मुख्य तकनीक को दिखाता है, और यह आपकी बुनियादी आवश्यकताओं के लिए काम करता है।
अद्यतन कार्य उदाहरण: http://output.jsbin.com/qixaxinuhe
टाइप किए गए पात्रों के मामले का उपयोग करने के विपरीत, मैच स्ट्रिंग्स के मामले को संरक्षित करने के लिए, इस लाइन का उपयोग करें:
var t = item.label.replace(re,"<span style='font-weight:bold;color:Blue;'>" +
"$&" +
"</span>");
दूसरे शब्दों में, ऊपर दिए गए मूल कोड से शुरू करके, आपको बस इसके this.term
साथ बदलने की आवश्यकता है "$&"
।
संपादित करें
उपरोक्त पृष्ठ पर प्रत्येक स्वत: पूर्ण विजेट बदलता है । यदि आप केवल एक को बदलना चाहते हैं, तो इस प्रश्न को देखें:
पृष्ठ पर स्वतः पूर्ण का केवल एक * उदाहरण * कैसे पैच करें?