2009-05-12 25 views
6

मेरे पास एक पृष्ठ है जिसमें दो इनपुट फ़ील्ड शहर और स्थान हैं। मेरे पास Devbridge से स्वत: पूर्ण प्लगइन शहर के क्षेत्र के लिए बहुत अच्छा काम कर रहा है। अब मैं इसे स्थल क्षेत्र पर काम करना चाहता हूं। जावास्क्रिप्ट मैं अब तक है:Jquery Autocomplete Chained Requests

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#Event_City').autocomplete({ 
      serviceUrl: '<%=Url.Action("GetCities", "Search") %>', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { country: 'Yes' }, 
     }); 
     $('#Event_Venue').autocomplete({ 
      serviceUrl: '<%=Url.Action("GetVenues", "Search") %>', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { city: $("#Event_City").val() }, 
     }); 
    });  
</script> 

दूसरा स्वत: पूर्ण मेरी नियंत्रक पर कार्रवाई करने के लिए एक अतिरिक्त पैरामीटर (शहर) से गुजरता है। इसके बाद मैं उस शहर में स्थानों पर अपने प्रतिक्रियाओं को प्रतिबंधित करने के लिए इसका उपयोग करूंगा। यह पैरामीटर प्राप्त हुआ है लेकिन इसमें #Event_City में दर्ज वर्तमान मान शामिल नहीं है। इसके बजाय इसमें डिफ़ॉल्ट मान होता है।

क्या कोई जानता है कि स्वतः पूर्ण होने पर मूल्य का मूल्यांकन कैसे किया जाए?

मैं बस जावास्क्रिप्ट के साथ शुरू कर रहा हूं इसलिए कृपया नम्र रहें।

धन्यवाद,

+0

मैं एक ही बात पूछने के लिए के बारे में था। मैं 'सामान्य' पैरामीटर को पारित करने की कोशिश कर रहा था, लेकिन मुझे लगता है कि इस क्षेत्र को अस्थायी घटना के बिना अपडेट नहीं किया जा रहा है। –

उत्तर

7

@Ian Mckay: मैं इस एक पसंद करने के लिए बहुत ज्यादा के रूप में यह (डेमो पृष्ठ) काफी बहुमुखी है करते हैं शहर की "बदलाव" घटना में बाध्य करने के लिए इस प्रकार है:

$(document).ready(function() { 
    $('#Event_City').autocomplete({ 
     serviceUrl: '', 
     minChars:2, 
     width: 300, 
     delimiter: /(,|;)\s*/, 
     deferRequestBy: 150, //miliseconds 
     params: { country: 'Yes' }, 
    }).change(function(){ 
     $('#Event_Venue').autocomplete({ 
      serviceUrl: '', 
      minChars:2, 
      width: 300, 
      delimiter: /(,|;)\s*/, 
      deferRequestBy: 150, //miliseconds 
      params: { city: $("#Event_City").val() } 
     }); 
    }); 
}); 
+0

लाते हैं क्या आप वाकई टेक्स्टबॉक्स में स्वत: पूर्ण प्लगइन को एक से अधिक बार बाध्य नहीं करेंगे? यह बुरा हो सकता है। जैसे, यदि आप पहले टेक्स्टबॉक्स के मान को बदलते हैं, तो कहें, 20 बार, दूसरा टेक्स्टबॉक्स ऑटोसॉज़-20 गुना होगा (और इसलिए एक बार में बैकएंड में 20 एसिंक्रोनस AJAX कॉल करें)? o_0 – KyleFarris

+0

@ केली - मुझे विश्वास है, आप सही हैं। ऐसा होगा, यदि उपयोगकर्ता वापस जाने और शहर को बदलने का फैसला करता है। मानक स्वत: पूर्ण jQuery प्लगइन में "नष्ट" विकल्प होता है जिसे पारित किया जा सकता है, लेकिन यह कोई नहीं करता है। –

3

कारण इसमें डिफ़ॉल्ट मान, जब पेज लोड क्योंकि स्वत: पूर्ण पाठ बॉक्स से जुड़ा हुआ है है। नए मान के साथ इसे अपडेट करने के लिए, प्लगइन को आपके पैरामीटर ऑब्जेक्ट के गुणों को अपडेट करने के लिए एक तरीका प्रदान करने की आवश्यकता होगी या आपको इसे दूसरे तत्व पर नष्ट करने की अनुमति होगी और फिर उपयोगकर्ता द्वारा पहली बार इसे बदलने के लिए इसे फिर से बनाया जाए एक मूल्य आपके द्वारा चुने गए स्वत: पूर्ण लाइब्रेरी में बहुत हल्का दिखता है (हमेशा एक बुरी चीज नहीं ... केवल आपके मामले में यह है ...) और यह कार्यक्षमता का समर्थन नहीं करता है।

आपके लिए मेरा सबसे अच्छा सुझाव एक और पुस्तकालय का प्रयास करना होगा। आप की जरूरत शहर के आधार पर फ़िल्टर करने के क्रम स्थान के लिए स्वत: पूर्ण पाने के लिए, -

http://view.jquery.com/trunk/plugins/autocomplete/demo/

+0

आप एक बहुत अच्छा बिंदु +1 – ichiban

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