2012-06-20 26 views
14

मेरे पास ऐसा करने के लिए एक वैध कारण है, लेकिन यह एक लंबी कहानी है इसलिए मैं यह बताने की कोशिश कर रहा हूं कि क्यों और केवल पूछना है कि यह ठीक है या नहीं।क्या यह एक ही नाम के साथ कई HTML रूपों के लिए ठीक है?

मेरे पास एक ऐसा पृष्ठ है जहां मुझे एक ही नाम के साथ कई रूपों की आवश्यकता है, लेकिन मुझे केवल वह फॉर्म चाहिए, जिसका सबमिट बटन सबमिट करने के लिए क्लिक किया गया हो। उदाहरण के लिए, मेरे पृष्ठ पर निम्न हो सकता है:

<form name="input" action="" method="get"> 
Username: <input type="text" name="user" /> 
<input type="submit" value="Submit" /> 
</form> 

text 

<form name="input" action="" method="get"> 
Username: <input type="text" name="user" /> 
<input type="submit" value="Submit" /> 
</form> 

text 

<form name="input" action="" method="get"> 
Username: <input type="text" name="user" /> 
<input type="submit" value="Submit" /> 
</form> 

क्या यह स्वीकार्य है?

+0

http://validator.w3.org – BalusC

+0

http://www.onlinewebcheck.com एचटीएमएल 5 दस्तावेज़ों में डुप्लिकेट फॉर्म नाम त्रुटियों का पता लगाता है –

+0

क्यों 'फॉर्म नाम' का उपयोग करें: http://stackoverflow.com/questions/ 8946320/व्हाट्स-द-पॉइंट-ऑफ-एचटीएमएल-फॉर्म-नेम-एट्रिब्यूट –

उत्तर

15

एचटीएमएल 4.01 specication के संबंध में, आप form तत्वों का उपयोग उसी name विशेषता के साथ कर सकते हैं, क्योंकि उनके लिए कोई विशिष्टता आवश्यकता नहीं है। ऐसा करने से, इस तरह के गुणों के उद्देश्य को हराया जाता है। वे क्लाइंट-साइड स्क्रिप्टिंग में फॉर्मों को संदर्भित करना आसान बनाने के लिए हैं: यदि आपके पास <form name=foo> है, तो document.foo उस फ़ॉर्म को संदर्भित करता है।

यह अनिश्चित है कि क्या होता है जब name विशेषता का उपयोग किया जाता है, लेकिन ब्राउज़र को ऐसा लगता है कि एक सरणी वापस करने के लिए क्या करना है। आपके उदाहरण में, document.foo एक 3-तत्व सरणी होगी, जिसमें document.foo[0] पहला फॉर्म होगा। लेकिन यह उपयोगी नहीं है, क्योंकि (मानते हैं कि दस्तावेज़ में कोई अन्य रूप नहीं है) आप document.forms[0] का उपयोग अच्छी तरह से परिभाषित अर्थ के साथ कर सकते हैं।

name विशेषता form तत्वों के लिए पुरानी है (लेकिन फार्म फ़ील्ड के लिए नहीं, जहां यह आवश्यक है)। HTML 4.01 spec clause on form का कहना है:

"name = CDATA [सीआई] इस विशेषता नाम तत्व इतना है कि यह स्टाइल शीट या स्क्रिप्ट से कहा जा सकता है। ध्यान दें। यह विशेषता पीछे की संगतता के लिए शामिल की गई है। अनुप्रयोगों को पहचानने के लिए अनुप्रयोगों को id विशेषता का उपयोग करना चाहिए। "

एचटीएमएल 5 ड्राफ्ट में, औपचारिक नियम भी name विशेषता के उपयोग को अस्वीकार करते हैं। HTML5 clause on the name attribute on form का कहना है कि इसका मूल्य " तत्वों में forms संग्रह में अद्वितीय होना चाहिए, जो कि यदि कोई है, तो"। यह एक भ्रमित फॉर्मूलेशन है, लेकिन यह मानना ​​सुरक्षित है कि यह दस्तावेज़ के form तत्वों के भीतर अद्वितीय होना चाहिए।

+0

एकाधिक मेलिंग नामों के लिए document.foo के बारे में बिट अपरिभाषित होने के मामले में, यह नहीं है कि http://dev.w3.org/html5/spec/dom.html#dom-document से अनुभाग 3.1.4 डोम वृक्ष एक्सेसर्स नामित इटिम- जो 3.1.4 के अंत तक परिभाषित करता है? – Alohci

+0

@Alohci, यह वर्तमान चश्मे में अपरिभाषित है। एचटीएमएल 5 ड्राफ्ट इसके लिए एक तंत्र को परिभाषित करते हैं, लेकिन यह एक विशिष्टता आवश्यकता भी लगाता है। –

+0

हाँ, उचित बिंदु। एचटीएमएल 4 की क्या चर्चा है, एचटीएमएल 5 क्या है, और उपयोगकर्ता-एजेंट * क्या करते हैं, यह देखते हुए कि उनके पास अलग-अलग HTML 4 और HTML5 मोड नहीं हैं, कभी-कभी बहुत जटिल हो जाते हैं। – Alohci

10

हां इसकी अनुमति है, केवल id अद्वितीय होना चाहिए। हालांकि, मैं इसकी सिफारिश नहीं करता हूं, फिर भी सड़क को भ्रमित करने की स्थिति में खुद को क्यों रखा जाए।

name विशेषता केवल परिभाषित करती है कि सर्वर पर भेजे जाने पर प्रत्येक फॉर्म फ़ील्ड तत्व का प्रतिनिधित्व किस प्रकार किया जाएगा।

+5

'फॉर्म' तत्व का 'नाम' विशेषता सर्वर पर भेजे गए डेटा को प्रभावित नहीं करती है।आपने फ़ॉर्म फ़ील्ड के लिए इसे 'नाम' विशेषताओं से भ्रमित कर दिया होगा। –

0

जब उपयोगकर्ता सबमिट बटन पर क्लिक करता है, तो केवल वह ही फॉर्म कार्रवाई में लिया जाएगा। फिर भी, उन्हें नाम देने के लिए बेहतर होना चाहिए ताकि आप उलझन में न हों :)

1

यह HTML5 में भी ठीक है। केवल नाम ही फॉर्म के अंदर अद्वितीय होना चाहिए।

दस्तावेज़ देखें: "मान खाली स्ट्रिंग नहीं होना चाहिए, और मान फ़ॉर्म संग्रह में फ़ॉर्म तत्वों के बीच अद्वितीय होना चाहिए, यदि यह है, तो कोई भी है।"

+1

यह भ्रामक हो सकता है। एचटीएमएल 5 में, [डब्ल्यू 3 सी की आवश्यकता है] (https://www.w3.org/TR/html5/forms.html#attr-form-name) ** फ़ॉर्म के संग्रह में अद्वितीय होने के लिए एक फॉर्म का ** 'नाम' , यदि कोई। लेकिन तत्वों का नाम किसी रूप में [किसी भी गैर-खाली स्ट्रिंग] (https://www.w3.org/TR/html5/forms.html#attr-fe-name) को छोड़कर \ __ वर्णसेट \ __ को छोड़कर हो सकता है और _isindex_। – Qdeep