<बटन> बनाम <इनपुट प्रकार = "बटन" />। कौन सा उपयोग करें?


1634

जब अधिकांश साइटों (एसओ सहित) को देखते हैं, तो उनमें से अधिकांश का उपयोग होता है:

<input type="button" />

के बजाय:

<button></button>
  • यदि कोई है, तो दोनों के बीच मुख्य अंतर क्या हैं?
  • क्या एक के बजाय दूसरे का उपयोग करने के लिए वैध कारण हैं?
  • क्या उन्हें संयोजित करने के लिए वैध कारण हैं?
  • क्या उपयोग <button>संगतता मुद्दों के साथ आता है, यह देखते हुए कि यह बहुत व्यापक रूप से उपयोग नहीं किया जाता है?

जवाबों:


661

उपयोग करते समय एक और IE समस्या <button />:

और जब हम IE के बारे में बात कर रहे हैं, यह बटन की चौड़ाई से संबंधित कीड़े के एक जोड़े को मिला है। जब आप शैलियों को जोड़ने का प्रयास कर रहे हैं, तो यह रहस्यमय तरीके से अतिरिक्त पैडिंग जोड़ देगा, जिसका अर्थ है कि आपको नियंत्रण में आने वाली चीजों को प्राप्त करने के लिए एक छोटे से हैक को जोड़ना होगा।


186
यह उत्तर 2009 में था, क्योंकि IE6 अब मर चुका है, मुझे लगता है कि <button>अब उपयोग नहीं करने का कोई कारण नहीं है ?
रोजी कासिम

75
यदि वे समुद्री डाकू करना चाहते हैं, तो उन्हें अपनी साइट का एक आकर्षक संस्करण प्राप्त करने दें। IE6 ड्रॉप, IE7 ड्रॉप, दुर्भाग्य से IE8 अभी भी समर्थन की जरूरत है।
जारेड

15
माइक्रोसॉफ्ट के IE6 काउंटडाउन पेज के अनुसार , चीन का IE6 उपयोग अभी भी (जनवरी 2014 के अनुसार) लगभग 22% पर जारी है। ie6death.com नोट करता है कि IE6 समर्थन 8 अप्रैल, 2014 को समाप्त हो रहा है।
ब्रायनहैन

54
जैसा कि कई ने चुटकी ली है, IE के पुराने संस्करणों पर अभी भी उपयोगकर्ताओं को इंटरनेट के बुरी तरह से टूटने की संभावना है।
जिंगलेथुला

9
<button />इसकी एक formविशेषता (और संबंधित विशेषताएँ) हैं, इसलिए इसे दस्तावेज़ निकाय के अन्य भागों में प्रपत्रों से जोड़ा जा सकता है।
Gup3rSuR4c

327

बस एक साइड नोट के रूप में, <button>संक्षेप में प्रस्तुत करना होगा, जो समस्या का कारण बन सकता है यदि आप इसे सबमिट किए बिना एक बटन का उपयोग करना चाहते हैं। इस प्रकार, उपयोग करने का एक और कारण <input type="button">(या <button type="button">)

संपादित करें - अधिक विवरण

एक प्रकार के बिना, buttonअंतर्निहित रूप से प्रकार प्राप्त होता हैsubmit । इससे कोई फर्क नहीं पड़ता कि फॉर्म में कितने सबमिट बटन या इनपुट हैं, उनमें से कोई भी जो स्पष्ट रूप से या अंतर्निहित रूप से टाइप किया गया है, जब क्लिक किया जाता है, तो वह फॉर्म सबमिट करेगा।

एक बटन के लिए 3 समर्थित प्रकार हैं

submit ||  "submits the form when clicked (default)"
reset  ||  "resets the fields in the form when clicked"
button ||  "clickable, but without any event handler until one is assigned"

4
क्या आप अधिक विवरण जोड़ सकते हैं? कई बटन होने पर क्या होता है? क्या यह केवल प्रकार = 'सबमिट' है जो ऐसा करता है?
साइमन_वेर

44
ओह प्रिय W3C, क्यों submitडिफ़ॉल्ट जब रूपों में से 99.9% की एक बहुत कुछ है के रूप में buttonके साथ एक submit ?!
2grit

13
बहुत सारे रूपों में केवल एक बटन होता है, जो सबमिट होता है। एक तरह से कॉल करना था या परेशान करना, मुझे लगता है।
२१:०४ पर jinglesthula

5
यह BIG gotcha हो सकता है! मेरा परीक्षण कोड लगभग 80% समय जमा करता है अन्यथा इसे एक सामान्य बटन के रूप में माना जाता था। BECAREFUL <बटन> का उपयोग करते समय <स्वरूप>
Sydwell

4
@ mik01aj "इससे कोई फर्क नहीं पड़ता कि फॉर्म में कितने सबमिट बटन या इनपुट हैं, उनमें से कोई भी जो स्पष्ट रूप से या अंतर्निहित रूप से टाइप किया गया है, जब क्लिक किया जाता है, तो फॉर्म सबमिट होगा।" क्या यह स्पष्ट नहीं है? किसी भी सबमिट बटन को फॉर्म सबमिट करना चाहिए। ऐसा क्यों कहते हैं? मैं क्या खो रहा हूँ?
कंक्रीट गनेट

174

यह लेख अंतर का बहुत अच्छा अवलोकन प्रदान करता है।

पृष्ठ से:

बटन तत्व बटन के साथ बनाई गई बटन, जैसे बटन INPUT तत्व के साथ बनाए गए हैं, लेकिन वे समृद्ध प्रतिपादन संभावनाएं प्रदान करते हैं: बटन तत्व में सामग्री हो सकती है। उदाहरण के लिए, एक बट्टन तत्व जिसमें एक छवि कार्य होता है जैसे और एक INPUT तत्व जैसा हो सकता है जिसका प्रकार "छवि" पर सेट है, लेकिन बटन तत्व प्रकार सामग्री की अनुमति देता है।

बटन तत्व - W3C


44

एक <button>तत्व के अंदर आप सामग्री डाल सकते हैं, जैसे पाठ या चित्र।

<button type="button">Click Me!</button> 

यह तत्व के साथ बनाए गए इस तत्व और बटन के बीच का अंतर है <input>


4
+1, चूंकि <input />वास्तव में एक शून्य तत्व है, जबकि <button>नहीं है
सेबस्टियन

39

उद्धरण

महत्वपूर्ण: यदि आप HTML रूप में बटन तत्व का उपयोग करते हैं, तो विभिन्न ब्राउज़र अलग-अलग मान प्रस्तुत करेंगे। इंटरनेट एक्सप्लोरर पाठ <button>और </button>टैग के बीच में जमा करेगा , जबकि अन्य ब्राउज़र मूल्य विशेषता की सामग्री प्रस्तुत करेंगे। HTML फॉर्म में बटन बनाने के लिए इनपुट एलिमेंट का उपयोग करें।

से: http://www.w3schools.com/tags/tag_button.asp

अगर मैं सही तरीके से समझूं, तो उत्तर संगतता और ब्राउज़र से ब्राउज़र की इनपुट स्थिरता है


43
@Hawken यह पृष्ठ बेवकूफों द्वारा लिखा गया था जिन्होंने सोचा था कि W3Schools ने W3C होने का नाटक किया था। वास्तव में, W3Schools हजारों अन्य साइटों से बेहतर या बदतर नहीं हैं जो इस तरह की सामग्री को संभालती हैं।
मिस्टर लिस्टर

वास्तव में, यह IE के संस्करण पर निर्भर करता है और IE मोड - w3schools ने बोली के बाद से जानकारी को अपडेट किया
डेमियन

12
@MrLister मैंने ऐसे लोगों से बात की है जो सोचते हैं कि W3Schools W3C से जुड़ा हुआ है। हालांकि मुझे यकीन नहीं है कि मैं W3Fools की "सटीक जानकारी प्रदान करने की जिम्मेदारी" से सहमत हूं, मुझे लगता है कि W3Schools की सटीकता वांछित होने के लिए कुछ छोड़ देती है, और यह कि इसके आलोचकों को बेवकूफ बनाने की आवश्यकता नहीं है। (मैंने W3S से बहुत कुछ सीखा, जब यह अच्छा था, तो इसने मानकों के साथ तालमेल नहीं रखा।)
मर्नेन लाएबो-कोसर

17
@MrLister W3Schools आसानी से वेब तकनीक की जानकारी के लिए सबसे अधिक इस्तेमाल किया जाने वाला अनौपचारिक स्रोत है। और गुणवत्ता वास्तव में बेकार है। उन्हें सिंगल क्यों नहीं किया गया? और क्या विवरण W3Fools गलत हो गया? वहां सब कुछ मुझे सही लगता है।
मर्नेन लाईबो-कोसर

19

मैं लेख एंकर, इनपुट और बटन के बीच अंतर को उद्धृत करूंगा :

एंकर ( <a>तत्व) हाइपरलिंक का प्रतिनिधित्व करता है, संसाधन एक व्यक्ति एक ब्राउज़र में नेविगेट या डाउनलोड कर सकता है। यदि आप अपने उपयोगकर्ता को एक नए पृष्ठ पर जाने या फ़ाइल डाउनलोड करने की अनुमति देना चाहते हैं, तो एक एंकर का उपयोग करें।

एक इनपुट ( <input>) एक डेटा फ़ील्ड का प्रतिनिधित्व करता है: इसलिए कुछ उपयोगकर्ता डेटा जो आपको सर्वर पर भेजने का मतलब है। बटन से संबंधित कई इनपुट प्रकार हैं:

  • <input type="submit">
  • <input type="image">
  • <input type="file">
  • <input type="reset">
  • <input type="button">

उनमें से प्रत्येक का एक अर्थ है, उदाहरण के लिए " फ़ाइल " का उपयोग किसी फ़ाइल को अपलोड करने के लिए किया जाता है, " रीसेट " एक फ़ॉर्म को साफ़ करता है, और " सबमिट " डेटा को सर्वर पर भेजता है। MDN पर या W3Schools पर W3 संदर्भ की जाँच करें ।

बटन ( <button>)तत्व काफी बहुमुखी है:

  • आप एक बटन के भीतर तत्वों को घोंसला कर सकते हैं, जैसे कि चित्र, पैराग्राफ या हेडर;
  • बटन भी शामिल कर सकते हैं ::beforeऔर ::afterछद्म तत्वों;
  • बटन disabledविशेषता का समर्थन करते हैं। इससे उन्हें चालू और बंद करना आसान हो जाता है।

फिर से, के लिए डब्ल्यू 3 संदर्भ जाँच <button>टैग MDN पर या W3Schools पर


17

HTML मैनुअल में फ़ॉर्म पृष्ठ का हवाला देते हुए :

बटन तत्व बटन के साथ बनाई गई बटन, जैसे बटन INPUT तत्व के साथ बनाए गए हैं, लेकिन वे समृद्ध प्रतिपादन संभावनाएं प्रदान करते हैं: बटन तत्व में सामग्री हो सकती है। उदाहरण के लिए, एक BUTTON तत्व जिसमें एक छवि कार्य होता है जैसे और एक INPUT तत्व जैसा हो सकता है जिसका प्रकार "छवि" पर सेट है, लेकिन BUTTON तत्व प्रकार सामग्री की अनुमति देता है।


17

यदि आप प्रपत्र में बटन बनाना चाहते हैं, तो इनपुट तत्व से बटन का उपयोग करें। और यदि आप कार्रवाई के लिए बटन बनाना चाहते हैं तो बटन टैग का उपयोग करें।


9
क्लाइंट साइड स्क्रिप्टिंग के लिए। HTML में <input type = "button"> का कोई कार्य नहीं है।
आईजीएल

12
<button>
  • डिफ़ॉल्ट रूप से व्यवहार करता है जैसे कि इसमें "टाइप =" सबमिट "विशेषता थी
  • एक फार्म के साथ ही रूपों में इस्तेमाल किया जा सकता है।
  • पाठ या HTML सामग्री की अनुमति है
  • सीएसएस छद्म तत्वों की अनुमति है (जैसे: पहले)
  • टैग नाम आमतौर पर एकल रूप के लिए अद्वितीय होता है

बनाम

<input type='button'>
  • टाइपिंग तत्व के रूप में व्यवहार करने के लिए टाइप को 'सबमिट' पर सेट किया जाना चाहिए
  • केवल रूपों में इस्तेमाल किया जा सकता है।
  • केवल पाठ सामग्री की अनुमति है
  • कोई सीएसएस छद्म तत्व नहीं
  • अधिकांश तत्वों (इनपुट्स) के रूप में एक ही टैग का नाम

-
आधुनिक ब्राउज़रों में, दोनों तत्व सीएसएस के साथ आसानी से शैली में हैं लेकिन ज्यादातर मामलों में, buttonतत्व को पसंद किया जाता है क्योंकि आप आंतरिक HTML और छद्म तत्वों के साथ अधिक स्टाइल कर सकते हैं।


9

जहाँ तक CSS स्टाइलिंग का सवाल है, <button type="submit" class="Btn">Example</button>यह बेहतर है क्योंकि यह आपको CSS :beforeऔर :after छद्म वर्गों का उपयोग करने की क्षमता देता है जो मदद कर सकता है।

<input type="button">नेत्रहीन रेंडरिंग के कारण अलग-अलग <a>या <span>जब कुछ स्थितियों में कक्षाओं के साथ स्टाइल किया जाता है तो मैं उनसे बचता हूं।

यह बहुत ही ध्यान देने योग्य है कि वर्तमान शीर्ष उत्तर 2009 में लिखा गया था। IE6 अब चिंता का विषय नहीं है, इसलिए <button type="submit">Wins</button>मेरी आँखों में स्टाइलिंग की निरंतरता शीर्ष पर आती है।


9

यदि आप jQuery का उपयोग कर रहे हैं तो एक बड़ा अंतर है। jQuery इनपुट पर अधिक घटनाओं से अवगत है, क्योंकि यह बटन पर है। बटन पर, jQuery केवल 'क्लिक' घटनाओं से अवगत है। इनपुट्स पर, jQuery 'क्लिक', 'फ़ोकस' और 'ब्लर' ईवेंट से अवगत है।

आप हमेशा आवश्यकतानुसार अपने बटनों में घटनाओं को बाँध सकते हैं, लेकिन बस इस बात से अवगत रहें कि jQuery द्वारा स्वचालित रूप से ज्ञात होने वाली घटनाएं अलग हैं। उदाहरण के लिए, यदि आपने एक ऐसा फंक्शन बनाया है जिसे जब भी आपके पेज पर 'फ़ोकसिन' की घटना होती है, तो एक इनपुट फंक्शन को ट्रिगर करता है लेकिन एक बटन नहीं होगा।


पुनः: KjetilNordin - हमारे पास एक आवेदन था जो किसी पृष्ठ पर किसी भी फ़ोकसिन घटनाओं के बारे में जानता था, और एक हुआ, एक कार्रवाई हुई। इसलिए यदि इनपुट का उपयोग करते हैं, तो आप सभी तत्वों को एक ही घटना के लिए देख सकते हैं। नहीं कह रहा है आप चाहिए, लेकिन आप कर सकते हैं। जोखिम यह है कि कोई व्यक्ति इनपुट को एक बटन में बदलता है, और फिर फ़ोकसिन नहीं होता है, और फिर आपकी कार्रवाई नहीं होती है, और फिर आपका ऐप बूम हो जाता है। यही हमारे साथ हुआ। :)
18

1
जब कोई तत्व वर्तमान में माउस / कीबोर्ड के माध्यम से लक्षित होता है, तो फोकस घटनाओं का उपयोग करें। वे उपयोगकर्ता को दिखाते हैं कि वे दस्तावेज़ में कहाँ हैं।
अल्बर्ट

7

<button>इसमें लचीला है कि इसमें HTML हो सकता है। इसके अलावा, सीएसएस का उपयोग करके स्टाइल करना बहुत आसान है, और स्टाइल वास्तव में सभी ब्राउज़रों में लागू होता है। हालाँकि, Internet Explorer (Eww! IE!) के संबंध में कुछ कमियाँ हैं। Internet Explorer मूल्य के रूप में टैग की सामग्री का उपयोग करते हुए, मूल्य विशेषता का ठीक से पता नहीं लगाता है। प्रपत्र के सभी मानों को सर्वर-साइड में भेजा जाता है, भले ही बटन पर क्लिक किया गया हो या नहीं। यह इसे एक <button type="submit">मुश्किल और दर्द के रूप में उपयोग करता है।

<input type="submit">दूसरी ओर किसी भी मूल्य या पता लगाने के मुद्दे नहीं है, लेकिन आप, जैसा कि आप के साथ HTML जोड़ सकते हैं <button>। यह शैली के लिए भी कठिन है, और स्टाइल हमेशा सभी ब्राउज़रों में अच्छी प्रतिक्रिया नहीं देता है। आशा है कि इससे मदद मिली।


7

मैं यहाँ बाकी उत्तरों में कुछ जोड़ना चाहता हूँ। इनपुट तत्वों को रिक्त या शून्य तत्व माना जाता है (अन्य खाली तत्व क्षेत्र, आधार, br, col, hr, img, input, link, meta, और param हैं। आप यहां भी देख सकते हैं ), जिसका अर्थ है कि उनके पास कोई सामग्री नहीं हो सकती है। किसी भी सामग्री के नहीं होने के अलावा, खाली तत्वों में कोई छद्म तत्व नहीं हो सकते हैं जैसे :: बाद में और पहले :, जिसे मैं एक बड़ी कमी मानता हूं।


4

इसके अलावा, मतभेदों में से एक पुस्तकालय के प्रदाता से आ सकता है, और वे क्या कोड करते हैं। उदाहरण के लिए मैं मोबाइल कोणीय यूआई के साथ संयोजन में कॉर्डोवा प्लेटफॉर्म का उपयोग कर रहा हूं, और जबकि इनपुट / डिव / आदि टैग एनजी-क्लिक के साथ अच्छी तरह से काम करते हैं, बटन विजुअल स्टूडियो डीबगर को क्रैश करने का कारण बन सकता है, निश्चित रूप से मतभेदों के कारण, जो प्रोग्रामर ने उत्पन्न किया; ध्यान दें कि एक ही मुद्दे पर MattC उत्तर इंगित करता है, jQuery सिर्फ एक काम है, और प्रदाता ने एक तत्व पर कुछ कार्यक्षमता के बारे में नहीं सोचा, यह s / वह दूसरे पर प्रदान करता है। इसलिए जब आप एक पुस्तकालय का उपयोग कर रहे हैं, तो आप एक तत्व के साथ एक समस्या का सामना कर सकते हैं, जिसे आप दूसरे के साथ सामना नहीं करेंगे। और बस लोकप्रिय की तरह input, ज्यादातर फिक्स्ड एक हो जाएगा, सिर्फ इसलिए कि यह अधिक लोकप्रिय है।


4

हालाँकि यह एक बहुत पुराना सवाल है और शायद यह प्रासंगिक नहीं है, कृपया ध्यान रखें कि जिन समस्याओं के लिए <button>टैग का उपयोग किया गया है उनमें से अधिकांश अब मौजूद नहीं हैं और इसलिए इसका उपयोग करने की अत्यधिक सलाह दी जाती है।

यदि आप विभिन्न कारणों से ऐसा नहीं कर सकते हैं, तो एक्सेस के रूप में अपने टैग में विशेषता भूमिका = "बटन" जोड़ने के लिए ध्यान रखें। यह लेख काफी जानकारीपूर्ण है: https://www.deque.com/blog/accessible-aria-buttons/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.