2012-03-28 61 views
6

這是一個非常基本的問題,但我確信有人知道爲什麼。在HTML中,當我自己製作一個按鈕元素,並且不給它和onclick而沒有jQuery .click()時,該按鈕將不會執行任何操作。完善。但是,當我這樣做,但在<form>元素中的按鈕,它會嘗試發送所有表單元素的GET數據到我的網站的根地址?爲什麼這樣做?我沒有把它作爲一個提交按鈕,甚至在該表單上定義了一個methodactionHTML爲什麼表單中的按鈕發送數據?

感謝您的信息提前!

**編輯**

這是我爲解決這個問題所做的。對於<form>內的按鈕,使用方法:

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

,它不會在默認情況下做任何事情。

+0

我也想知道這一點。就我個人而言,我認爲按鈕應該只是一個按鈕,並且'input [type = submit]'元素實際上應該提交表單... – 2012-03-28 13:30:25

+0

它的* by-desgin *特性。 – 2012-03-28 13:32:19

+0

我不確定我是否理解這個問題。按鈕是使事情發生的機制。那麼按鈕的作用是什麼?如果你不想要任何表單功能,爲什麼要使用'?順便說一句,'method'是可選的,默認爲'GET'; 'location'不是屬性。 – 2012-03-28 13:38:04

回答

9

可以在相應的MDN條目中看到,按鈕元素的type屬性的默認值爲submit。因此,如果您忽略它或不將其更改爲buttonreset,則默認行爲將啓動並且表單被提交。

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

我知道它確實提交,但不是爲什麼。感謝您的鏈接。 – kontur 2012-03-28 13:35:11

+0

我想這不是爲什麼,可能來自於嘗試使代碼在一天中更容易回覆......也許。 – 2012-03-28 14:03:51

+0

@jeffery_the_wind我認爲在早期的預期用途就是提交表單。那時候不需要額外的'type'屬性。後來這個需求出現了,但爲了保持向後兼容性,默認類型保持'submit'。只是我的想法 - 沒有參考。 – Sirko 2012-03-28 14:09:41

0

它是這樣設計的,因爲你有時需要知道在服務器端按下了哪個按鈕。如果您想要沒有按鈕的按鈕功能,請使用樣式化的A-tag。

0

按鈕在表單中被視爲提交控件,不知道爲什麼。

它發佈到您的根目錄的原因是您沒有指定action,因此使用默認值。

它使用GET的原因是因爲這是默認的method

要防止它發生,請將return false;添加到按鈕末尾的onclick

相關問題