11

मैं Fiddle hereJquery स्वत: पूर्ण परिवर्तन स्रोत

है और यदि यह choice1 रेडियो बटन चुना जाता है और availabletags2 अगर choice2 रेडियो बटन चुना जाता है मैं स्रोत के रूप में availabletags1 की जरूरत है। और मुझे वास्तविक उपयोगकर्ता पसंद से इसे गतिशील रूप से बदलने की आवश्यकता है।

कोड:

var availableTags1 = [ 
"ActionScript", 
"AppleScript", 
"Asp" 
]; 

var availableTags2 = [ 
"Python", 
"Ruby", 
"Scala", 
"Scheme" 
]; 

$("#autocomplete").autocomplete({ 
source: availableTags1 
}); 

$('input[name="choice"]').click(function(){ 
if(this.checked){ 
    if(this.value == "1"){ 
     $("#autocomplete").autocomplete('option', 'source', availableTags1) 
    } else { 
     $("#autocomplete").autocomplete('option', 'source', availableTags2) 
    } 
+0

'availabletags1' और 'availabletags2' सरणियों –

+0

भी क्या' choice1 'और' choice2' –

+0

Sry है, मैं गलत लिंक jsfiddle पर पोस्ट कर रहे हैं, अब यह ठीक होना चाहिए। –

उत्तर

24

प्रयास करें

$('input[name="choice"]').click(function(){ 
    if(this.checked){ 
     if(this.value == "1"){ 
      $("#autocomplete").autocomplete('option', 'source', availableTags1) 
     } else { 
      $("#autocomplete").autocomplete('option', 'source', availableTags2) 
     } 
    } 
}) 

डेमो: Fiddle

+0

बढ़िया, यह काम करता है। अब मुझे बस इसके साथ अपने समाधान को मर्ज करने की जरूरत है [http://jsfiddle.net/7RL4p/11/](http://jsfiddle.net/7RL4p/11/) और मैं अभी भी इसे काम नहीं कर सकता। –

+1

@LudvikCtrnacty http://jsfiddle.net/arunpjohny/H9dUD/1/ –

+0

अद्भुत, धन्यवाद। क्या आप जानते हैं कि "टाइप किए गए पत्र" द्वारा खोज कैसे जोड़ना है - मेरा मतलब है - यदि उपयोगकर्ता अब "सी" टाइप करें (उपलब्ध थैग 1 से) - यह जावास्क्रिप्ट दिखाता है, लेकिन मैं कुछ भी दिखाना नहीं चाहता, क्योंकि सी के साथ कुछ भी शुरू नहीं होता है। और आदि (यदि उपयोगकर्ता प्रकार (उपलब्ध थैग 1 से) एससी - इसे स्कैला, योजना दिखाना चाहिए; यदि स्कै - अब केवल स्कैला)। मुझे उम्मीद है कि मैंने इसे समझ में लिखा है। और यह भी - किसी भी तरह प्रदर्शित मूल्यों की अधिकतम संख्या निर्धारित करने के लिए posibble है? धन्यवाद –

11

किसी के लिए 2016 में यह पढ़ और परे, वहाँ request/response पद्धति का उपयोग कर एक बेहतर तरीका है। jQuery autocomplete में source विकल्प है जो प्लग को स्वीकार करते समय दो तर्क प्राप्त करेगा: request और responserequest एक ऑब्जेक्ट है जिसमें स्वत: पूर्ण घटक, अर्थात् request.term है जो इनपुट फ़ील्ड का मान है। response एक फ़ंक्शन है, एक पैरामीटर स्वीकार कर रहा है, लौटाया गया डेटा response(data)। जैसा कि आप नीचे दिए गए मेरे उदाहरण में देख सकते हैं, आप AJAX अनुरोध को सुविधाजनक बनाने के लिए इस विकल्प का उपयोग कर सकते हैं। आप आसानी से request फ़ंक्शन को jQuery $.ajax विधियों के सफलता कॉलबैक के रूप में पास कर सकते हैं और यह इरादे के अनुसार काम करेगा। आप इस पैटर्न का उपयोग करके अन्य अच्छी चीजें भी कर सकते हैं, जैसे मेमोरी में खोज करना, अगर आप कुछ डेटा पहले से ही ले चुके हैं और कैश कर चुके हैं, तो बाद में खोज उपयोगकर्ताओं के लिए अधिक वास्तविक समय बनाते हैं।

$('#term-search').autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: $('#api-endpoint').val(),//whether you are using radios, checkboxes, or selects, you can change the endpoint at runtime automatically 
      dataType: "json", 
      data: { 
       query : request.term,//the value of the input is here 
       language : $('#lang-type').val(), //you can even add extra parameters 
       token : $('#csrf_token').val() 
      }, 
      success: response //response is a callable accepting data parameter. no reason to wrap in anonymous function. 
     }); 
    }, 
    minLength: 1, 
    cacheLength: 0, 
    select: function(event, ui) {} //do something with the selected option. refer to jquery ui autocomplete docs for more info 
}); 
संबंधित मुद्दे