मेरे पास एक चुनिंदा बॉक्स है जिसमें मैं कई विकल्प चुन सकता हूं। चयन बॉक्स में एकाधिक optgroups हैं। जावास्क्रिप्ट में एक बार में एक संपूर्ण optgroup का चयन करने का कोई आसान तरीका है?चुनिंदा बॉक्स में एक पूरे ऑप्टग्रुप का चयन करने का आसान तरीका
उत्तर
मैं jQuery (या किसी अन्य ढांचे) उपयोग करने का सुझाव जल्दी से डोम चयन को संभालने के लिए। प्रत्येक ऑप्टग्रुप को कक्षा को इसे पकड़ना आसान बनाने के लिए दें।
$("optgroup.className").children().attr('selected','selected');
आप पूरे समूह का चयन उपयोगकर्ता के आधार पर समूह का चयन करना चाहते हैं, निम्न कार्य करें:
$("optgroup.className").select(function(e) {
$(this).children().attr('selected','selected');
});
** दोनों उदाहरण अपरीक्षित छद्म कोड हैं, लेकिन वे कम से कम के साथ काम करना चाहिए यदि आवश्यक हो तो परिवर्तन।
यदि आप ढांचे का उपयोग नहीं कर सकते हैं, तो आपको ऑप्ट समूह और बच्चों को खोजने के लिए स्वयं को डोम को पार करना होगा। तत्व को चुनने के लिए आप select
तत्व पर श्रोता संलग्न कर सकते हैं, फिर भी बच्चों के साथ आगे बढ़ें।
jQuery:
$('#myoptgroup option').attr('selected', true);
मैं सामान्य रूप से इस तरह की साधारण नौकरियों के लिए jQuery का उपयोग करने के खिलाफ हूं लेकिन मैं इसका मूल्य यहां देख सकता हूं। फिर भी, यदि आप एक गैर jQuery समाधान, कोई लाइब्रेरी का उपयोग कर कोई नकली आईडी या वर्गों को शुरू करने और तेजी से चलाने का लाभ होगा कि पसंद करते हैं, यहाँ एक है:
<script type="text/javascript">
function selectOptGroupOptions(optGroup, selected) {
var options = optGroup.getElementsByTagName("option");
for (var i = 0, len = options.length; i < len; i++) {
options[i].selected = selected;
}
}
function selectOptGroup(selectId, label, selected) {
var selectElement = document.getElementById(selectId);
var optGroups = selectElement.getElementsByTagName("optgroup");
var i, len, optGroup;
for (i = 0, len = optGroups.length; i < len; i++) {
optGroup = optGroups[i];
if (optGroup.label === label) {
selectOptGroupOptions(optGroup, selected);
return;
}
}
}
</select>
<select id="veg" multiple>
<optgroup label="roots">
<option>Swede</option>
<option>Carrot</option>
<option>Turnip</option>
</optgroup>
<optgroup label="leaves">
<option>Spinach</option>
<option>Kale</option>
</optgroup>
</select>
<input type="button" onclick="selectOptGroup('veg', 'roots', true)" value="Select roots">
तुम कर सकते हो यदि आपका <optgroup>
एक आईडी है selectOptGroup
फ़ंक्शन के साथ दूर करें और बस ऑप्टग्रुप को सीधे selectOptGroupOptions
पर पास करें।
मैं अभी कुछ ऐसा करने की कोशिश कर रहा था।
मैं समूह के लेबल पर क्लिक करने पर <optgroup>
के <option>
एस का चयन करना चाहता था। पहला प्रयास इस तरह से चला गया:
$('select > optgroup').click(function() {
$(this).children().attr('selected', true);
});
यह समाधान आधा काम किया ...
<optgroup>
के लेबल अपने बच्चों की सभी चयनित हो गया क्लिक करने पर।
लेकिन जब बस एक <option>
यह अभी भी समूह में सभी अन्य <option>
रों का चयन किया गया था पर क्लिक! समस्या घटना बुलबुला थी, क्योंकि <option>
<optgroup>
तकनीकी रूप से आप इसे भी क्लिक कर रहे हैं।
इसलिए पहेली का अंतिम भाग इस घटना में ऊपर की ओर इशारा करते हुए दबाने के लिए था कि <option>
वास्तव में इसके बजाय क्लिक किया गया था। अंतिम समाधान तब बन गया:
$('select > optgroup').click(function() {
$(this).children().attr('selected', true);
});
$('select > optgroup > option').click(function (e) {
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
});
नौकरी की गई!
संपादित
infuriatingly इस IE8 में काम काम नहीं करता है (और संदिग्ध < IE8 - शायद IE9) ...
यह दोनों और तत्वों पर क्लिक घटनाओं को पूरी तरह से अनदेखा करने का निर्णय लेता है। एकमात्र विकल्प जिसे मैं सोच सकता हूं, क्लिक को कैप्चर करने के लिए ऑप्टग्रुप लेबल के ऊपर तत्वों को स्थान देना है, लेकिन संभवतः यह प्रयास के लायक नहीं है ...
- 1. पूरे आवेदन के लिए CurrentCulture सेट करने का आसान तरीका?
- 2. चुनिंदा बॉक्स
- 3. चुनिंदा बॉक्स का चयन कैसे करें चयनित मूल्य
- 4. एक चुनिंदा क्वेरी चुनने का चयन करें
- 5. ऑप्टग्रुप
- 6. ऑप्टग्रुप के साथ मल्टीइलेक्स्ट बॉक्स: प्रति समूह
- 7. Jquery - चुनिंदा
- 8. ऑप्टग्रुप
- 9. बुनियादी jQuery-UI सीएसएस को ओवरराइट करने का आसान तरीका?
- 10. स्थान प्रदर्शित करने का सबसे आसान तरीका?
- 11. एक छवि खींचने का सबसे आसान तरीका?
- 12. Android में ListPreference एकाधिक विकल्प बनाने का आसान तरीका?
- 13. एक पुनरावर्ती आत्म-शामिल करने का सबसे आसान तरीका?
- 14. एक MySQL डेटाबेस कॉपी करने का सबसे आसान तरीका?
- 15. हास्केल में कुंजीपटलों का इंतजार करने के लिए इंतजार करने का एक आसान तरीका क्या है?
- 16. "का चयन करें/चयन रद्द करें" कई चुनिंदा क्षेत्रों
- 17. चयन बॉक्स में सेटटाइमआउट घटना
- 18. चुनिंदा बॉक्स के विकल्प टेक्स्ट का रंग कैसे बदलें?
- 19. डब्ल्यूसीएफ सेवा का नकल करने का आसान तरीका?
- 20. ओरेकल संग्रहीत प्रक्रिया का परीक्षण करने का सबसे आसान तरीका
- 21. Django/jQuery कैस्केडिंग बॉक्स का चयन करें?
- 22. मैं चुनिंदा चयन बॉक्स को गतिशील रूप से कैसे बदलूं?
- 23. पेड़ में सबट्री खोजने का आसान तरीका
- 24. चयन वितरण में एनयूएलएल को खत्म करने का सबसे आसान तरीका?
- 25. जावा में 'है' करने का सबसे आसान तरीका क्या है?
- 26. ट्रिगर्स में निषेध करने का सबसे आसान तरीका क्या है?
- 27. लिखने योग्य चयन बॉक्स
- 28. WPF में ListBox को रीफ्रेश करने का आसान तरीका?
- 29. डब्ल्यूसीएफ प्रोजेक्ट में एनएचबीर्नेट को स्टार्टअप करने का आसान तरीका
- 30. jQuery एक ऑप्टग्रुप लेबल
हम्म मैं jQuery के बिना समाधान ढूंढने की कोशिश कर रहा था। लेकिन इसे करने का सरल तरीका देख रहे हैं; और दूसरी तरफ: डोम के माध्यम से घूमना .... यह jquery है। – blub
@blub - मुझे लगता है कि बहुत से लोग इस तरह jQuery में आते हैं। ;-) –
डोम को घुमाने में खुद को बहुत मुश्किल नहीं है, लेकिन एक ढांचा सिर्फ इसे आसान बनाता है। 'document.getElementById ('selectElementID') 'आपको चुनिंदा तत्व स्वयं ही देगा। फिर यह सिर्फ अपने बच्चों को घुमाने का मामला है या आप एक ईवेंट श्रोता को चुन सकते हैं ताकि चयन ईवेंट कैप्चर किया जा सके और यदि यह आपका वांछित ऑप्टग्रुप है तो पार्स। यदि ऐसा है, तो आप ऑप्टग्रुप बच्चों को पार करेंगे और उन्हें भी चुनेंगे। –