क्या एक ही नाम के साथ दो इनपुट तत्व रखना मान्य है?


80

अर्थात:

<form 1>
<input type="hidden" name="url" value="1">
</form 1>

तथा

<form 2>
<input type="hidden" name="url" value="2">
</form 2>

क्या यह अनुमति है और वैध है?


जवाबों:


61

हाँ, यह मान्य है

यह अच्छा है

<form name="form1">
  <input type="hidden" name="url" value="1">
</form>

<form name="form2">
  <input type="hidden" name="url" value="2">
</form>

यह भी ठीक है और आम तौर पर मूल्यों की एक सरणी के रूप में व्याख्या की जाएगी, उदाहरण के लिए {url: [1, 2]}, आपके सर्वर ने क्या किया है, इस पर निर्भर करता है। URL एन्कोडिंग में, यह दिखेगा url=1&url=2

<form name="form1">
  <input type="hidden" name="url" value="1">
  <input type="hidden" name="url" value="2">
</form>

28
यह मान्य है। यह सर्वर साइड लैंग्वेज के लिए कोई भ्रम नहीं पैदा करेगा (यहां तक ​​कि PHP, नाम साझा करने वाले क्षेत्रों के लिए अपने सम्मेलनों के साथ, लगातार और अनुमानित रूप से कई इनपुट संभालेंगे जो उस कन्वेंशन का उपयोग नहीं करते हैं)। यह जावास्क्रिप्ट के लिए कोई भ्रम नहीं पैदा करेगा (जो तत्वों को एक संग्रह के रूप में प्रस्तुत करेगा और उनमें से किसी को भी अनदेखा नहीं करेगा)। यह उन लेखकों के लिए भ्रम पैदा कर सकता है / बना सकता है जो यह जानते हुए बिना कोड लिखते हैं कि वे क्या कर रहे हैं, लेकिन यह कल्पना से ठीक है।
क्वेंटिन

@ डेविड डोरवर्ड: यह समझाने के लिए धन्यवाद, मैंने उस हिस्से को हटा दिया।

14
यह पोस्ट भ्रामक है। एक ही नाम वाले इनपुट एचटीएमएल मानक के भाग हैं - इनका उपयोग चेकबॉक्स के लिए किया जाता है।
beldaz

1
यह एक ही रूप में एक ही नाम के साथ कई इनपुट (छिपी या अन्यथा) रखने के लिए मान्य है। इसके अलावा, संरचित सूचियों या साहचर्य मानचित्रों को प्रस्तुत करते समय यह काफी उपयोगी होता है, और अक्सर हैकी DIY बदलाव की तुलना में बहुत क्लीनर (और कम भंगुर) होता है।
कैंडू १

1
मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन स्पष्टीकरण का एक बिंदु है। PHP को आपको यह बताने की आवश्यकता है कि तत्व इस प्रकार एक सरणी बना रहे हैं: <code> <input type = "hidden" name = "url []" value = ....... </ code> यदि आप नहीं ऐसा करें, php अंतिम फ़ील्ड का अंतिम मान लेगा और कुंजी "url" के लिए फॉर्म ऐरे में प्लग करेगा।
मार्क सी।

12

हाँ।

अधिक, यह आवश्यक है यदि आप रेडियो बटन समूहों के साथ काम कर रहे हैं।


बिल्कुल सही। या चेकबॉक्स के साथ, जिस स्थिति में आप अंत में "url []" डाल सकते हैं और इसे उठाया जा सकता है।
केरी जोन्स

2
@ केरी - यह एक PHPism है। नियंत्रणों के समूहों के लिए विशेष नाम नहीं होने से अधिकांश प्रपत्र हैंडलिंग लाइब्रेरीज़ काफी खुश हैं।
क्वेंटिन

8

"यह अच्छा नहीं है" मुझे पता है कि हर ब्राउज़र पर सही ढंग से पर्स; यदि url एन्कोडेड स्ट्रिंग में दो url दिखाई देते हैं, तो इसे एक ऐरे के रूप में माना जाएगा। इसे JQuery में आज़माएं:

$('<form name="form1">\
     <input type="hidden" name="url" value="1">\
     <input type="hidden" name="url" value="2">\
</form>').serialize()

और आपको मिलेगा: "url=1&url=2"

एक अच्छी तरह से लिखा क्वेरी स्ट्रिंग पार्सर इस तरह से एक json संरचना लौटाएगा:

 {"url":["1", "2"]}

क्या यह सख्ती से कल्पना है? नहीं, लेकिन न तो ईओएल से बचने के लिए एक बहु-पंक्ति स्ट्रिंग बना रहा है, जैसा कि मैंने ऊपर किया था।


6

हां - प्रत्येक केवल अपने संबंधित रूपों के साथ जमा करेगा।

यदि आप उन्हें एक ही रूप में रखते हैं, तो एक दूसरे को ओवरराइड करेगा और यह मान्य नहीं है।

EDIT: जैसा कि महमूदवक्स ने बताया है कि ओवरराइडिंग केवल कुछ भाषाओं में होती है (जैसे PHP) जो कि HTML के भीतर ही निहित नहीं है।


12
तुम गलत हो। यदि आपके पास एक ही नाम के साथ कई इनपुट हैं, तो एक दूसरे को ओवरराइड नहीं करेगा । सभी इनपुट अनुरोध के निकाय में जोड़े जाएंगे, जिस क्रम में वे html में दिखाई देते हैं। और यह मान्य है: एक ही नाम के कई छिपे हुए नियंत्रण तत्वों के साथ HTML फ़ॉर्म
महमूदवक्स

5
@Mahmoodvcs: यह कड़ाई से सच नहीं है। यदि फॉर्म को PHP सेवा में पोस्ट किया जाता है, तो अंतिम मान जीत जाता है। यदि आप एक नाम को दिए गए कई मान चाहते हैं, तो प्रत्येक नाम '[]' में समाप्त होना चाहिए।
जेफ लोरी

6
हम यहां HTML की बात कर रहे हैं, PHP की नहीं।
महमूदवक्स 23

2
@yardpenalty - मुझे आपका सवाल समझ में नहीं आया (जेफ जवाब देगा) अभी तक)
केरी जोन्स

क्षमा करें, मुझे पता चला है। यदि आप php का उपयोग करके प्रक्रिया करने जा रहे हैं तो आपको नाम सरणी बनाना होगा। मुझे लगता है कि यह बूटस्ट्रैप है जिसे एक ही नाम या कुछ और होने के लिए रेडियो बटन की आवश्यकता होती है। वैसे भी, हाँ आप कर सकते हैं।
yaspenalty.com


2

ए) आपका पहला उदाहरण ठीक है, क्योंकि जमा करने के समय अलग होंगे:

<form id="1">
    <input type="hidden" name="url" value="1">  
</form>
<form id="2">
    <input type="hidden" name="url" value="2">  
</form>

बी) आपका दूसरा उदाहरण भी ठीक है, लेकिन मानक कोडिंग अभ्यास नहीं:

<form>
    <input type="hidden" name="url" value="1">  
    <input type="hidden" name="url" value="2">  
</form>

जावा कोड दो मान दोनों को निकालें:

Map<String,String[]> parmMap = requestObj.getParameterMap();   
String input1 = parmMap.get("url")[0];   
String input2 = parmMap.get("url")[1];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.