2010-12-16 2 views
42

के अंदर HTML टैग्स में मेरे पास एक पृष्ठ में एक सारणी है जिसमें बाईं ओर सेल्स में चेकबॉक्स और दाईं ओर सेल्स में विवरण शामिल हैं। "विवरण" में एच 4 हेडर और सादा पाठ शामिल है। मैं उस पूरे विवरण को बनाना चाहता हूं (<td></td> के अंदर सबकुछ) एक लेबल।<label>

तो प्रत्येक पंक्ति इस तरह दिखता है:

<tr><td><input type="checkbox" name="entiries[]" value="i1" id="i1"></td> 
<td><label for="i1"> 
<h4>Some stuff</h4>more stuff.. 
<h4>Some stuff</h4>more stuff.. 
</label> 
</td></tr> 

हालांकि यह काम नहीं करता है, पाठ एक लेबल तरह काम नहीं करता और क्लिक करने योग्य नहीं है। मैं इसका परीक्षण करने के लिए फ़ायरफ़ॉक्स 3.6 का उपयोग कर रहा हूं। अगर मैं <h4> टैग हटा देता हूं तो यह काम करना शुरू कर देता है, लेकिन यह स्वरूपण को जटिल बनाता है। क्या <h*> टैग्स के बारे में कुछ है जो <label> को सही तरीके से काम करने से रोकता है?

उत्तर

40

ब्लॉक स्तर तत्व (जिसमें h4 संबंधित है) इनलाइन तत्वों के अंदर अनुमति नहीं है, और अपरिभाषित व्यवहार का कारण बन जाएगा। आप इसके बजाए span तत्वों का उपयोग कर सकते हैं।

+2

ब्लॉक अवधि के तत्वों को 'span' में भी अनुमति नहीं है। – Kornel

+0

वास्तव में समस्या हल करती है। प्रदर्शित करने के लिए अवधि की शैली सेट करना: ब्लॉक मुझे इसे शीर्षक के समान दिखने की अनुमति देता है (इसलिए उस अवधि के लिए सीएसएस प्रविष्टि एच 4 + डिस्प्ले: ब्लॉक के समान है), और लेबल कार्यक्षमता भी काम करती है। – SaltyNuts

+6

मुझे लगता है कि उनका मतलब है "लेबल के बजाए" एच 4 एस के बजाय " – Quentin

27

केवल inline elements (अन्य लेबल तत्वों को छोड़कर) लेबल तत्वों के अंदर दिखाई दे सकता है।

<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- form field label text --> 

- http://www.w3.org/TR/html4/interact/forms.html#h-17.9.1

यह वहाँ वैसे भी शीर्षकों डाल करने के लिए कोई मतलब नहीं है।

+2

+1। शीर्षलेख लेबल में समझ में नहीं आता है। – You

+4

कृपया, चलिए बात करते हैं कि क्या बनाता है और क्या समझ में नहीं आता है। आपको पता नहीं है कि मेरी परियोजना का संदर्भ क्या है, तो इसका न्याय क्यों करें? – SaltyNuts

+8

यह आपके या आपके प्रोजेक्ट पर कोई निर्णय नहीं है, यह टैग के अर्थशास्त्र के बारे में है। अर्थात्, एक 'लेबल' तत्व एक और केवल एक नियंत्रण के लिए शीर्षक की तरह है। तो यह पहले से ही एक शीर्षक है। अंदर एक और शीर्षक डालना अनावश्यक है। इसके अलावा, 'एच *' शीर्षलेख कई चीजों को इंगित कर सकते हैं, लेकिन एक लेबल में केवल एक चीज को इंगित करने की अनुमति दी जाएगी, वही बात जो लेबल पहले ही इंगित कर रही है। यह एक छवि के लिए कैप्शन के रूप में शीर्षक का उपयोग करने जैसा है। यह अर्थपूर्ण रूप से समझ में नहीं आता है। हालांकि, देखो के संदर्भ में, 'स्पैन' टैग का उपयोग करना समझ में आता है जो 'एच *' टैग के समान दिखता है। – brentonstrine

14

एचटीएमएल में <label> तत्व एक इनलाइन स्तर तत्व है और इसमें ब्लॉक स्तर तत्व नहीं हो सकते हैं।

शायद यह आपके मुद्दों का कारण बन रहा है। वैकल्पिक रूप से आप <h4> के अंदर अपने लेबल डाल सकते हैं:

<tr><td><input type="checkbox" name="entiries[]" value="i1" id="i1"></td> 
<td>< 
<h4><label for="i1">Some stuff</label></h4>more stuff.. 
<h4><label for="i1">Some stuff</label></h4>more stuff.. 
</label> 
</td></tr> 
+6

आप जानते हैं, यह मेरे लिए कभी नहीं हुआ कि आपके पास दिए गए चेकबॉक्स के लिए एक से अधिक लेबल हो सकते हैं। धन्यवाद! – SaltyNuts

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