2011-03-25 16 views
8

मैं सिर्फ पढ़ा http://w3fools.com/#html_forms पर निम्न:इनपुट टैग को सीधे फ़ॉर्म टैग में क्यों अनुमति नहीं दी जाती है?

गैर ब्लॉक स्तर तत्वों (जैसे <input> के रूप में) एचटीएमएल 5 तक <form> टैग के अंदर सीधे मान्य नहीं हैं।

मैं इन पंक्तियों के साथ कुछ भी कभी नहीं सुना था, और हर मूल HTML ट्यूटोरियल मैंने देखा है इनपुट टैग सीधे डाल एक रूप टैग के अंदर के साथ ठीक हो रहा है। तो मेरे प्रश्न में तीन भाग हैं:

  • क्या उपरोक्त कथन वैध है?
  • यह मामला क्यों है? (क्या यह बस एक निरीक्षण था, या HTML नियम के निर्माता इस नियम को बनाकर विशिष्ट समस्याओं को रोकने की कोशिश कर रहे थे?)
  • इनपुट के साथ फ़ॉर्म बनाने का अनुशंसित तरीका क्या है? (हम सिर्फ प्रपत्र टैग के अंदर सीधे एक div या तालिका बनाने के लिए माना जाता है?)
+4

यूयूपी, फॉर्म तत्वों के प्रत्यक्ष बच्चों को ब्लॉक-स्तर तत्व होना चाहिए। यहां देखें: http://vidasp.net/HTML- संरचना-diagram.html –

उत्तर

8

यह मानक मानक है। एचटीएमएल 4.01 में, definition for <form> यह बताता है कि यह केवल ब्लॉक तत्वों या <script> हो सकते हैं:

  • बयान के रूप में मानक चला जाता है जहाँ तक वैध है। जहां तक ​​दुनिया में हर ब्राउज़र की अनुमति है, यह ठीक है।
  • मैं केवल अनुमान लगा सकता हूं कि वे लेआउट टैग न होने के लिए <form> पर विचार करते हैं, और वे सभी इनलाइन तत्वों को ब्लॉक तत्व के अंदर रखना चाहते हैं।
  • हां, आपको <div>, <table>, <p>, या <form> के अंदर कुछ अन्य ब्लॉक प्रस्तुति तत्व रखना होगा।
+0

यह मेरे लिए इतना अजीब है कि spec कहता है "FORM तत्व नियंत्रण के लिए एक कंटेनर के रूप में कार्य करता है" और "एक फ़ॉर्म में टेक्स्ट और मार्कअप हो सकता है (पैराग्राफ, सूचियां, इत्यादि) फॉर्म नियंत्रण के अलावा, "लेकिन फिर वे इसे सीधे नियंत्रण रखने की अनुमति नहीं देते हैं। – StriplingWarrior

1

सब मैं कि यह वास्तव में आश्चर्य की बात नहीं है एचटीएमएल ट्यूटोरियल आप कोई बात बिगड़ क्या करना सिखाते हैं कि उल्लेख करना चाहते हैं सबसे पहले - एचटीएमएल चीजों को करने के किसी भी तरीके से स्वीकार करने के लिए व्यावहारिक रूप से डिजाइन किया गया था। आप टैग को अनजान छोड़ सकते हैं, आप उन्हें अनुचित तरीके से घोंसला कर सकते हैं और क्या नहीं, जो कि मैं व्यक्तिगत रूप से एक्सएचटीएमएल का उपयोग करता हूं।

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

फ़ॉर्म वास्तव में किसी भी प्रकार का कंटेनर नहीं है। ऐसा लगता है जैसे एचटीएमएल स्पेक के निर्माता ब्लॉक-लेवल तत्वों जैसी चीजों के शौकीन थे, आपको अंदर सबकुछ लपेटना चाहिए। हालांकि, यह सिर्फ मेरा विचार है, लेकिन जहां तक ​​मैंने देखा है, गैर-ब्लॉक-स्तर तत्वों का उपयोग उनके लिए उचित कंटेनर के बिना नहीं किया जाना चाहिए। यह बिल्कुल ठीक है जैसे आपको <blockquote> में गैर-ब्लॉक-स्तर तत्वों को नहीं रखना चाहिए। ब्लॉक-लेवल-तत्व अन्य तत्वों के लिए कंटेनर हैं।

एक div, एक टेबल - मुझे लगता है कि यहां तक ​​कि <p> यहां कुछ भी काम करता है।

5

उपर्युक्त कथन सत्य है। एचटीएमएल में < इनपुट > टैग < फॉर्म > टैग का मान्य तत्व नहीं है। यह मान्य करने के लिए, आपको < इनपुट > टैग को < फ़ील्ड > या <div> के साथ टैग करने की आवश्यकता है। जो नीचे प्रदर्शित किया गया है।

<form action="/" method="post"> 
    <fieldset> 
     Field: <input type="text" name="field" /> 
     <br /> 
     <input type="submit" value="Submit" /> 
    </fieldset> 
</form> 
0

ठीक है, एचटीएमएल 4.01 विनिर्देश (विशेष रूप से section 17.3) के अनुसार, यह तकनीकी रूप से सच है। हालांकि, मुझे किसी भी वेब ब्राउज़र के बारे में पता नहीं है जो वास्तव में आपको इस पर एक समस्या देगा।

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