दिलचस्प पोस्ट
Print_r () के आउटपुट में एक चर को देखने में सक्षम है, लेकिन यह सुनिश्चित नहीं है कि कोड में कैसे पहुंचें थ्रेड पूल कब उपयोग किया जाता है? Quirks मोड क्या है? सेलेनियम जब तक दस्तावेज़ तैयार नहीं हो जाता है तब तक प्रतीक्षा करें कैसे कस्टम घटनाओं का उत्सर्जन और संभाल करने के लिए? कैसे iPhone फोटो लाइब्रेरी के लिए तस्वीर को बचाने के लिए? जावा: चिकना रंग संक्रमण कृत्रिम रूप से सी को अपना कोड क्यों सीमित करते हैं? मैं सी # में एक्सएमएल फाइल को पढ़ और पार्स कैसे कर सकता हूं? आइटम पर क्लिक करने में असमर्थ Android कस्टम सूचीदृश्य ब्राउज़र / टैब सक्रिय है या नहीं यह कैसे बताने के लिए सबसेट बीम एल्गोरिथम जावा सिंगलटन और सिंक्रनाइज़ेशन क्या जेडीबीसी के साथ पोस्टग्रेड्स से कनेक्ट करते समय स्कीमा निर्दिष्ट करना संभव है? PHP / Perl के माध्यम से उपयोगकर्ता ब्राउज़र में पीडीएफ फाइलें दिखाएं

JQuery के साथ एक ड्रॉप-डाउन सूची के चयनित मान को बदलें

मेरे पास ज्ञात मानों के साथ एक ड्रॉप-डाउन सूची है मैं जो करने की कोशिश कर रहा हूं वह ड्रॉप डाउन सूची को एक विशेष मान में सेट किया गया है जो मुझे पता है कि jQuery का उपयोग करते हुए मौजूद है। नियमित जावास्क्रिप्ट का प्रयोग करना, मैं ऐसा कुछ करता हूं:

ddl = document.getElementById("ID of element goes here"); ddl.value = 2; // 2 being the value I want to set it too. 

हालांकि, मुझे इसे jQuery के साथ करने की आवश्यकता है, क्योंकि मैं अपने चयनकर्ता (बेवकूफ ASP.NET क्लाइंट आईडी के लिए एक सीएसएस वर्ग) का उपयोग कर रहा हूं।

यहां कुछ चीजें हैं जिन्हें मैं कोशिश कर रहा हूं:

 $("._statusDDL").val(2); // Doesn't find 2 as a value. $("._statusDDL").children("option").val(2) // Also failed. 

मैं इसे jQuery के साथ कैसे कर सकता हूं?

अद्यतन करें

जैसे कि यह पता चला है, मैं इसे पहली बार के साथ सही था:

 $("._statusDDL").val(2); 

जब मैं ऊपर एक चेतावनी डालता हूं तो यह ठीक काम करता है, लेकिन जब मैं चेतावनी को निकालता हूं और इसे पूरी गति से चलाता हूं, तो मुझे त्रुटि मिलती है

चयनित संपत्ति को सेट नहीं किया जा सका अमान्य सूचकांक

मुझे यकीन नहीं है कि यह jQuery या Internet Explorer 6 (मैं इंटरनेट एक्सप्लोरर 6 अनुमान लगा रहा है) के साथ एक बग है, लेकिन यह बहुत कष्टप्रद है

वेब के समाधान से एकत्रित समाधान "JQuery के साथ एक ड्रॉप-डाउन सूची के चयनित मान को बदलें"

jQuery का प्रलेखन कहता है:

[jQuery.val] चेक, या चयन करता है , सभी रेडियो बटन, चेकबॉक्स, और विकल्प का चयन करें जो मूल्यों के सेट से मेल खाते हैं।

यह व्यवहार jQuery संस्करण 1.2 और इसके बाद के संस्करण में है।

आपको सबसे ज्यादा यह चाहिए:

 $("._statusDDL").val('2'); 

छिपे हुए क्षेत्र के साथ आपको इस तरह प्रयोग करना होगा:

 $("._statusDDL").val(2); $("._statusDDL").change(); 

या

 $("._statusDDL").val(2).change(); 

बस एक FYI, आप इसे पूरा करने के लिए सीएसएस वर्गों का उपयोग करने की आवश्यकता नहीं है।

ग्राहक पर सही नियंत्रण नाम प्राप्त करने के लिए आप निम्न कोड लिख सकते हैं:

 $("#<%= statusDDL.ClientID %>").val("2"); 

ASP.NET, jQuery के अंदर सही ढंग से नियंत्रण आईडी को प्रस्तुत करेगा।

बस के साथ प्रयास करें

 $("._statusDDL").val("2"); 

और नहीं के साथ

 $("._statusDDL").val(2); 

कुछ समाधानों को देखने के बाद, यह मेरे लिए काम किया।

मेरे पास कुछ मूल्यों के साथ एक ड्रॉप-डाउन सूची है और मैं एक और ड्रॉप-डाउन सूची से समान मूल्य का चयन करना चाहता हूं … तो पहले मैंने एक चर मेरे पहले ड्रॉप-डाउन के selectIndex में डाल दिया।

 var indiceDatos = $('#myidddl')[0].selectedIndex; 

फिर, मैं अपनी दूसरी ड्रॉप-डाउन सूची पर उस अनुक्रमणिका का चयन करता हूं

 $('#myidddl2')[0].selectedIndex = indiceDatos; 

ध्यान दें:

मुझे लगता है कि यह कम से कम, विश्वसनीय, सामान्य और सुरुचिपूर्ण समाधान है।

क्योंकि मेरे मामले में, मैं मूल्य विशेषता के बजाय चयनित विकल्प के डेटा विशेषता का उपयोग कर रहा हूं। इसलिए यदि आपके पास प्रत्येक विकल्प के लिए अनूठे मूल्य नहीं है, तो विधि ऊपर की सबसे छोटी और प्यारी है !!

ये समाधान मानते हैं कि आपके ड्रॉप डाउन सूची में प्रत्येक आइटम में ड्रॉप डाउन सूची में उनकी स्थिति से संबंधित वैल () मान है

यदि यह मामला नहीं है तो चीजें थोड़ा अधिक जटिल हैं

एक ड्रॉप डाउन सूची के चयनित इंडेक्स को पढ़ने के लिए, आप इसका उपयोग करेंगे:

 $("#dropDownList").prop("selectedIndex"); 

एक ड्रॉप डाउन सूची के चयनित इंडेक्स को सेट करने के लिए, आप इसका उपयोग करेंगे:

 $("#dropDownList").prop("selectedIndex", 1); 

ध्यान दें कि प्रोप () सुविधा के लिए JQuery v1.6 या बाद के संस्करण की आवश्यकता है।

देखते हैं कि आप इन दो कार्यों का उपयोग कैसे करेंगे।

मान लीजिए कि आपके पास महीने के नामों की एक बूंद की सूची थी

 <select id="listOfMonths"> <option id="JAN">January</option> <option id="FEB">February</option> <option id="MAR">March</option> </select> 

आप "पिछला महीना" और "अगला महीना" बटन जोड़ सकते हैं, जो वर्तमान में चयनित ड्रॉप डाउन सूची आइटम को देखता है, और इसे पिछले / अगले महीने बदलता है:

 <button id="btnPrevMonth" title="Prev" onclick="btnPrevMonth_Click();return false;" /> <button id="btnNextMonth" title="Next" onclick="btnNextMonth_Click();return false;" /> 

और यहां जावास्क्रिप्ट है जो इन बटनों को चलाएगा:

 function btnPrevMonth_Click() { var selectedIndex = $("#listOfMonths").prop("selectedIndex"); if (selectedIndex > 0) { $("#listOfMonths").prop("selectedIndex", selectedIndex - 1); } } function btnNextMonth_Click() { // Note: the JQuery "prop" function requires JQuery v1.6 or later var selectedIndex = $("#listOfMonths").prop("selectedIndex"); var itemsInDropDownList = $("#listOfMonths option").length; // If we're not already selecting the last item in the drop down list, then increment the SelectedIndex if (selectedIndex < (itemsInDropDownList - 1)) { $("#listOfMonths").prop("selectedIndex", selectedIndex + 1); } } 

JSON डेटा के साथ एक ड्रॉप डाउन सूची को पॉप्युलेट करने का तरीका दिखाने के लिए निम्न साइट भी उपयोगी है:

http://mikesknowledgebase.com/pages/Services/WebServices-Page8.htm

ओफ़्फ़ !!

उम्मीद है की यह मदद करेगा।

मुझे पता है कि यह एक पुराना सवाल है और ऊपर के समाधान कुछ मामलों में छोड़कर ठीक काम करता है

पसंद

 <select id="select_selector"> <option value="1">Item1</option> <option value="2">Item2</option> <option value="3">Item3</option> <option value="4" selected="selected">Item4</option> <option value="5">Item5</option> </select> 

तो मद 4 ब्राउज़र में "चयनित" के रूप में दिखाएगा और अब आप 3 के रूप में मान बदलना चाहते हैं और उपरोक्त समाधान के अनुसार आइटम 4 के बजाय "आइटम 3" को दिखाते हैं। यदि आप उपयोग करते हैं

 jQuery("#select_selector").val(3); 

आप देखेंगे कि आइटम 3 ब्राउज़र में चयनित है। लेकिन जब आप डेटा को पीएचपी या एएसपी में संसाधित करते हैं, तो आप "4" के रूप में चयनित मान पाएंगे। कारण यह है, आपका HTML इस तरह दिखेगा

 <select id="select_selector"> <option value="1">Item1</option> <option value="2">Item2</option> <option value="3" selected="selected">Item3</option> <option value="4" selected="selected">Item4</option> <option value="5">Item5</option> </select> 

और इसे अंतिम रूप से "4" के रूप में अलग-अलग भाषा में विभाजित किया जाता है

तो इस संबंध में मेरा अंतिम समाधान

 newselectedIndex = 3; jQuery("#select_selector option:selected").removeAttr("selected"); jQuery("#select_selector option[value='"+newselectedIndex +"']").attr('selected', 'selected'); 

संपादित करें : "+ newselectedIndex +" के आसपास एकल बोली जोड़ें ताकि एक ही कार्यक्षमता को गैर-संख्यात्मक मानों के लिए उपयोग किया जा सके।

तो मैं वास्तव में क्या करता हूं, चयनित विशेषता को हटा दिया और फिर चयनित के रूप में नया बना दिया।

मैं @strager, @ y0mbo, @IISIK और अन्य जैसे वरिष्ठ प्रोग्रामर से इस पर टिप्पणी की सराहना करूंगा

इसलिए मैंने इसे बदल दिया है कि अब यह सेटटिमेउट का उपयोग कर 300 मिलिसेकेंड के बाद चलाया जाता है। अब काम करने लगता है

मैं एक अजाक्स कॉल से डेटा लोड करते समय इस बार कई बार चला गया हूं। मैं भी .NET का उपयोग करता हूं, और jQuery चयनकर्ता का उपयोग करते समय क्लाइंट आईडी को समायोजित करने में समय लगता है। setTimeout प्रॉपर्टी को जोड़ने के लिए होने वाली समस्या को ठीक करने के लिए, आप अजाक्स कॉल में बस " async: false " डाल सकते हैं, और यह ऑब्जेक्ट को वापस लाने के लिए DOM को पर्याप्त समय दे देगा चयन करने के लिए नीचे एक छोटा सा नमूना:

 $.ajax({ type: "POST", url: document.URL + '/PageList', data: "{}", async: false, contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { var pages = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d; $('#locPage' + locId).find('option').remove(); $.each(pages, function () { $('#locPage' + locId).append( $('<option></option>').val(this.PageId).html(this.Name) ); }); } }); 

मैं क्लाइंट आईडी प्राप्त करने के लिए एक फ़ंक्शन का उपयोग करता हूं, जैसे:

 $.extend({ clientID: function(id) { return $("[id$='" + id + "']"); } }); 

तो आप इस तरह jQuery में asp.net नियंत्रण को कॉल कर सकते हैं:

 $.clientID("_statusDDL") 

एक और विकल्प है कि नियंत्रण param क्लाइंटआईडी = "स्टेटिक" को .net में सेट करना है और फिर आप जिस वस्तु को सेट करते हैं, उसके द्वारा आप जेक्यू में वस्तु का उपयोग कर सकते हैं।

बस एक नोट – मैं जेपीएल में वाइल्डकार्ड चयनकर्ताओं का इस्तेमाल कर रहा हूं, जो कि एएसपी.नेट क्लाइंट आईडी द्वारा अस्पष्ट किए गए आइटम को हड़पने के लिए – यह आपकी भी मदद कर सकता है:

 <asp:DropDownList id="MyDropDown" runat="server" /> $("[id* = 'MyDropDown']").append("<option value='-1'>&nbsp;</option>"); //etc 

आईडी * वाइल्डकार्ड पर ध्यान दें – यह आपके तत्व को खोज लेगा, भले ही उसका नाम "ctl00 $ ctl00 $ सामग्री प्लेसहोल्डर 1 $ सामग्री प्लेसहोल्डर 1 $ मायड्रोपडाउन"

आप ड्रॉप डाउन सूची में मान कैसे लोड कर रहे हैं या किस मान का चयन करने के लिए निर्धारित है? अगर आप यह अजाक्स का उपयोग कर रहे हैं, तो चयन होने से पहले आपको देरी की आवश्यकता हो सकती है क्योंकि उस समय मूल्यों को लोड नहीं किया गया था, जो उस प्रश्न में पंक्ति को निष्पादित किया गया था। यह भी समझाता है कि जब आपने स्टेटस सेट करने से पहले लाइन पर एक अलर्ट स्टेटमेंट डाल दिया, तब से यह क्यों समझा गया क्योंकि सतर्क कार्रवाई डेटा लोड करने के लिए देरी की पर्याप्त देगी।

यदि आप jQuery के अजाक्स विधियों में से एक का उपयोग कर रहे हैं, तो आप कॉलबैक फ़ंक्शन को निर्दिष्ट कर सकते हैं और फिर $("._statusDDL").val(2); डाल सकते हैं $("._statusDDL").val(2); आपके कॉलबैक फ़ंक्शन में

यह समस्या को संभालने का एक और विश्वसनीय तरीका होगा क्योंकि आप यह सुनिश्चित कर सकते हैं कि डेटा तैयार होने पर विधि निष्पादित की गई, भले ही वह 300 एमएस से अधिक समय ले ले।

यदि हमारे पास "डेटा वर्गीकरण" शीर्षक के साथ एक ड्रॉपडाउन है:

 <select title="Data Classification"> <option value="Top Secret">Top Secret</option> <option value="Secret">Secret</option> <option value="Confidential">Confidential</option> </select> 

हम इसे एक चर में प्राप्त कर सकते हैं:

 var dataClsField = $('select[title="Data Classification"]'); 

फिर एक अन्य वैरिएबल में डालें जिसमें हम ड्रॉपडाउन को चाहते हैं:

 var myValue = "Top Secret"; // this would have been "2" in your example 

तब हम उस फ़ील्ड का उपयोग कर सकते हैं जिसे हम dataClsField में dataClsField , dataClsField पता myValue और इसे .prop() का उपयोग करके चयनित करें:

 dataClsField.find('option[value="'+ myValue +'"]').prop('selected', 'selected'); 

या, आप केवल .val() उपयोग कर सकते हैं, लेकिन आपके चयनकर्ता का का उपयोग केवल तब किया जा सकता है जब यह ड्रॉपडाउन पर एक वर्ग से मेल खाता है, और आपको कोष्ठक के अंदर मूल्य पर उद्धरणों का उपयोग करना चाहिए या बस पहले से निर्धारित चर का उपयोग करना चाहिए:

 dataClsField.val(myValue); 
 <asp:DropDownList id="MyDropDown" runat="server" /> 

$("select[name$='MyDropDown']").val() उपयोग करें $("select[name$='MyDropDown']").val()

 <asp:DropDownList ID="DropUserType" ClientIDMode="Static" runat="server"> <asp:ListItem Value="1" Text="aaa"></asp:ListItem> <asp:ListItem Value="2" Text="bbb"></asp:ListItem> </asp:DropDownList> 

ClientIDMode = "स्थिर"

 $('#DropUserType').val('1');