← Back to HTML Course | Chapter 5: Forms | Lesson 7 of 7

HTML Optgroup

ऑप्शन्स की एक लंबी dropdown लिस्ट -- जैसे दुनिया का हर देश, या कैटलॉग की हर प्रोडक्ट कैटेगरी -- जब एक दर्जन आइटम्स से ज़्यादा हो जाती है तो उसे स्कैन करना मुश्किल हो जाता है। optgroup एलिमेंट select dropdown के अंदर एक लेबल वाली विज़ुअल ग्रुपिंग जोड़कर इस समस्या को हल करता है, जिससे आप related ऑप्शन्स को एक बोल्ड हेडिंग के नीचे व्यवस्थित कर सकते हैं, बिना यह बदले कि असल में कौन सा ऑप्शन सबमिट होता है।
Syntax
markup
<select name="name">
  <optgroup label="Group label">
    <option value="value">Label</option>
  </optgroup>
</select>

optgroup से Options को ग्रुप करना

optgroup एक <select> dropdown के अंदर संबंधित <option> एलिमेंट्स के एक सेट को लपेटता है, और इसका label attribute उस ग्रुप के ऊपर एक बोल्ड हेडिंग दिखाता है, जिससे वह उसी dropdown के दूसरे ग्रुप्स से विज़ुअली अलग दिखता है, बिना dropdown के व्यवहार को बदले।

Note:
  • जब किसी select dropdown में लगभग 10-15 ऑप्शन से ज़्यादा हो जाएं, तब optgroup का उपयोग करें, क्योंकि तभी बिना लेबल के स्कैन करना थकाऊ लगने लगता है।
  • Accepted attributes:
  • label — required text shown for the group
  • disabled — boolean
Warning: optgroup पर label attribute ज़रूरी है; इसके बिना, ग्रुप बिना किसी दिखने वाले हेडिंग के रेंडर होता है, जिससे विज़ुअल ग्रुपिंग बेमतलब हो जाती है।

उदाहरण: Grouping Options with optgroup

markup
<select>
  <optgroup label="Fruits">
    <option>Apple</option>
    <option>Banana</option>
  </optgroup>
</select>

पूरे ग्रुप को Disable करना

किसी optgroup में disabled attribute जोड़ने से उस ग्रुप के अंदर के सभी ऑप्शन एक साथ ग्रे-आउट होकर disable हो जाते हैं, जो पूरी category (जैसे out-of-stock product types) को अस्थायी रूप से छुपाने के लिए उपयोगी है, बिना हर individual ऑप्शन को एक-एक करके disable किए।

Note:
  • किसी पूरी अनुपलब्ध category को एक साथ ग्रे-आउट करने के लिए disabled optgroup का उपयोग करें, बजाय इसके कि उसके अंदर हर ऑप्शन को अलग-अलग disable किया जाए।
  • Accepted values:
  • disabled — boolean attribute on optgroup
  • Disables all contained options
Warning: एक disabled optgroup फिर भी अपना label और options विज़ुअली दिखाता है (ग्रे किया हुआ) -- यह उन्हें dropdown से हटाता नहीं है, सिर्फ सिलेक्शन को रोकता है।

उदाहरण: Disabling an Entire Group

markup
<select>
  <optgroup label="Out of Stock" disabled>
    <option>Grapes</option>
  </optgroup>
</select>

किसी ग्रुप के अंदर एक Option को Pre-select करना

किसी optgroup के अंदर नेस्ट किए गए <option> पर selected attribute बिल्कुल वैसे ही काम करता है जैसे यह बिना ग्रुप किए गए option पर करता है -- ऑप्शन को ग्रुप करने से डिफ़ॉल्ट selection, फॉर्म सबमिशन, या ऑप्शन के value attribute का व्यवहार नहीं बदलता।

Note:
  • जांच लें कि ऑप्शन ग्रुप किए जाने के बाद भी आपका pre-selected डिफ़ॉल्ट विज़ुअली सही लगता है -- तीसरे ग्रुप में छुपा हुआ selected ऑप्शन यूज़र से आसानी से चूक सकता है।
  • Accepted values:
  • selected — boolean attribute on option
  • Only one selected option in a single-select
Warning: पूरे select में डिफ़ॉल्ट रूप से सिर्फ एक ही ऑप्शन सिलेक्ट किया जा सकता है, भले ही वह ऑप्शन कई optgroups में से किसी एक ग्रुप के अंदर क्यों न हो।

उदाहरण: Pre-selecting an Option Within a Group

markup
<select>
  <optgroup label="Sizes">
    <option>Small</option>
    <option selected>Medium</option>
  </optgroup>
</select>

एक Dropdown में कई Groups

एक single select में एक के बाद एक कितने भी optgroup एलिमेंट हो सकते हैं, और यह ग्रुप किए गए और बिना ग्रुप किए गए ऑप्शन को भी मिला सकता है -- वे ऑप्शन जो सीधे select के अंदर, बिना किसी wrapping optgroup के रखे जाते हैं, बिना किसी हेडिंग के, लेबल किए गए ग्रुप्स के साथ ही दिखाई देते हैं।

Note: बिना ग्रुप किए गए "miscellaneous" ऑप्शन को लिस्ट के बिल्कुल ऊपर या नीचे रखें, ताकि ग्रुप किए गए बनाम बिना ग्रुप किए गए ऑप्शन का विज़ुअल स्ट्रक्चर predictable बना रहे।
Warning: सिर्फ एक या दो ऑप्शन्स वाले कई छोटे ग्रुप्स को मिलाने से यह एक बिना ग्रुप वाली सिंगल लिस्ट से भी ज़्यादा क्लटर्ड लग सकता है -- ग्रुप तभी बनाएं जब इससे स्कैन करना सच में आसान होता हो।

उदाहरण: Multiple Groups in One Dropdown

markup
<select>
  <optgroup label="Fruits">
    <option>Apple</option>
  </optgroup>
  <optgroup label="Vegetables">
    <option>Carrot</option>
  </optgroup>
</select>

Optgroup Labels को स्टाइल करना

ब्राउज़र optgroup label पर अपने आप एक डिफ़ॉल्ट बोल्ड स्टाइल लागू करते हैं, और हालांकि dropdown internals को ब्राउज़र में CSS से स्टाइल करना काफी मुश्किल माना जाता है, लेकिन label टेक्स्ट को आमतौर पर optgroup selector को टारगेट करके बेसिक font-weight और color properties से कस्टमाइज़ किया जा सकता है, हालांकि रेंडरिंग अभी भी operating system के हिसाब से बदलती है।

Note: अपनी किसी भी कस्टम optgroup स्टाइलिंग को कई ब्राउज़र और operating systems पर टेस्ट करें, क्योंकि native select dropdown की रेंडरिंग ज़्यादातर दूसरे HTML एलिमेंट्स की तुलना में कहीं ज़्यादा बदलती है।
Warning: select/optgroup के internals की heavy CSS customization cross-browser अविश्वसनीय है -- पूरी तरह custom-styled dropdown के लिए, कई टीमें native select को स्टाइल करने के बजाय एक custom widget बनाती हैं।

उदाहरण: Styling Optgroup Labels

markup
<style>
  optgroup {
    font-weight: bold;
    color: navy;
  }
</style>
<select>
  <optgroup label="Fruits">
    <option>Apple</option>
  </optgroup>
</select>
Live Example
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
🔒

Chapter Quiz — Complete all 7 topics to unlock

0/7 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.