2012-03-28 10 views
6

यह एक बहुत ही प्राथमिक सवाल है, लेकिन मुझे यकीन है कि वहां कोई व्यक्ति जानता है कि क्यों। एचटीएमएल में, जब मैं स्वयं बटन बटन बना देता हूं, और इसे नहीं देता और onclick और कोई jQuery .click() बटन कुछ भी नहीं करेगा। उत्तम। लेकिन जब मैं ऐसा करता हूं और <form> तत्व के अंदर बटन, तो यह मेरी वेबसाइट के रूट पते पर सभी फॉर्म तत्वों का डेटा डेटा भेजने का प्रयास करता है? ऐसा क्यों कर रहा है? मैंने इसे सबमिट बटन नहीं बनाया है या उस फॉर्म पर method या action भी परिभाषित किया है ??एचटीएमएल फॉर्म में बटन क्यों डेटा भेजते हैं?

अग्रिम जानकारी के लिए धन्यवाद!

** संपादित करें **

यह है कि मैं क्या समस्या को ठीक करने किया था। <form> अंदर बटन के लिए, का उपयोग करें:

<button type="button"></button> 

और यह डिफ़ॉल्ट रूप से कुछ नहीं करेंगे।

+0

मैं भी यह जानना चाहता हूं। व्यक्तिगत रूप से मुझे लगता है कि एक बटन सिर्फ एक बटन होना चाहिए, और 'इनपुट [टाइप = सबमिट]' तत्व वास्तव में फॉर्म जमा करना चाहिए ... –

+0

इसकी एक * बाय-डिज़िन * सुविधा। –

+0

मुझे यकीन नहीं है कि मैं सवाल समझता हूं।चीजें घटित करने के लिए बटन तंत्र हैं। तो एक बटन का बिंदु क्या है जो कुछ भी नहीं करता है? और यदि आप किसी भी फॉर्म की कार्यक्षमता नहीं चाहते हैं, तो ' का उपयोग क्यों करें? वैसे, 'विधि' वैकल्पिक है और' GET' पर डिफ़ॉल्ट है; 'स्थान' कोई विशेषता नहीं है। –

उत्तर

9

संबंधित MDN प्रविष्टि पर देखा जा सकता है, type के लिए डिफ़ॉल्ट मान एक बटन तत्व की संपत्ति submit है। इसलिए यदि आप इसे छोड़ देते हैं या button या reset पर नहीं बदलते हैं, तो डिफ़ॉल्ट व्यवहार में लाया जाएगा और फ़ॉर्म सबमिट हो जाएगा।

<form action=""> 
    <button type="button">Nothing will happen</button> 
    <button>Form gets submitted</button> 
</form> 
+0

मुझे पता था कि यह सबमिट करता है, लेकिन क्यों नहीं। लिंक के लिए धन्यवाद। – kontur

+0

मुझे लगता है कि ऐसा क्यों नहीं है, शायद दिन में वापस कोड को आसान बनाने की कोशिश करने से आता है ... शायद। –

+0

@jeffery_the_wind मुझे लगता है कि शुरुआती दिनों में इच्छित उपयोग सिर्फ फॉर्म जमा करना था। उस दिन अतिरिक्त 'प्रकार' संपत्ति की आवश्यकता नहीं थी। बाद में यह आवश्यकता आई, लेकिन पिछड़े संगतता को संरक्षित करने के लिए डिफ़ॉल्ट प्रकार 'सबमिट' बना रहा। बस मेरे विचार - इस पर कोई संदर्भ नहीं। – Sirko

0

यह इस तरह से डिज़ाइन किया गया था क्योंकि आपको कभी-कभी यह जानने की आवश्यकता होती है कि सर्वर-साइड पर कौन सा बटन दबाया गया था। यदि आप बटन के बिना बटन कार्यक्षमता चाहते हैं, तो स्टाइल ए-टैग का उपयोग करें।

0

बटनों को फ़ॉर्म में जमा नियंत्रण के रूप में माना जाता है, सुनिश्चित नहीं है कि क्यों।

यह आपकी रूट पर पोस्ट होने का कारण है क्योंकि आपने action निर्दिष्ट नहीं किया है और इसलिए डिफ़ॉल्ट का उपयोग किया जाता है।

इसका उपयोग करने का कारण यह है क्योंकि यह डिफ़ॉल्ट method है।

ऐसा होने से रोकने के लिए, अपने बटन के onclick के अंत में return false; जोड़ें।

4

मैं इसे एक सबमिट बटन

<button> तत्वों a type attribute. The default value is submit है नहीं किया। अगर आप इसे फॉर्म जमा नहीं करना चाहते हैं तो type="button" सेट करें।

या यहाँ तक कि परिभाषित एक विधि

methodGET

या कि फार्म पर स्थान पर चूक ??

action वर्तमान यूआरआई के लिए डिफ़ॉल्ट।

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