2008-11-14 128 views
203

有沒有這樣的事情作爲一個愚蠢的問題,所以我們走:<input type='button' /><input type='submit' />有什麼區別?<input type ='button'/>和<input type ='submit'/>之間的區別

+2

另請參見** [輸入類型=「提交」Vs按鈕標記是否可以互換?](http://stackoverflow.com/questions/7117639/input-type-submit-vs-button-tag-are-they - 可互換)** – hippietrail 2011-11-23 16:40:07

+33

我有同樣的問題,這絕對不是一個愚蠢的問題,特別是如果你一直是一個asp.net web表單開發人員所有的生活,我們不使用普通的html,因爲愚蠢的asp。網絡控件爲我們吐了這個狗屎...這就是爲什麼我們最終變得愚蠢的時候移動到MVC,並不得不回到幼兒園瞭解如何再次編寫簡單的表單元素。 :) – PositiveGuy 2012-03-30 06:57:17

+2

HTML

回答

212

<input type="button" />按鈕將無法提交表單 - 它們默認情況下不執行任何操作。它們通常與JavaScript結合使用,作爲AJAX應用程序的一部分。當用戶點擊他們

<input type="submit">按鈕將提交他們的形式,除非你用JavaScript另行指定。

18

一個「按鈕」就是這樣,一個按鈕,您可以向其中使用Javascript添加額外的功能。 「提交」輸入類型具有提交所放置表單的默認功能(當然,您仍然可以使用Javascript添加其他功能)。

9

按鈕將不會在其own.It提交表單是一個簡單的按鈕,用於通過使用JavaScript,而提交執行一些操作是一種按鈕,它默認提交表單,每當用戶點擊提交按鈕。

5

IE 8實際使用的第一個按鈕它遇到提交或按鈕。而不是通過使其成爲輸入類型來容易地指示哪個是期望的=在頁面上提交訂單實際上是重要的。

1

<input type="button">可以在任何地方使用,不只是內形式,他們不提交表單,如果他們在一個。更適合Javascript

<input type="submit">應該只用於表單,它們會向指定的URL發送請求(GET或POST)。他們應該把不是放在任何HTML地方。

0

W3C說清楚,關於Button元素

按鈕可以被看作是對所有類型的按鈕沒有缺省行爲泛型類的規範。

W3C

2

還應該提到的那種類型的命名輸入=「提交」也將與其他形式的命名字段一起提交,而一個名爲輸入類型=「按鈕」不會。

與其他詞,在下面的例子中,命名輸入name=button1將不會得到提交而命名的輸入name=submit1WILL得到提交。

樣本HTML格式(index.html的):

<form action="checkout.php" method="POST"> 

    <!-- this won't get submitted despite being named --> 
    <input type="button" name="button1" value="a button"> 

    <!-- this one does; so the input's TYPE is important! --> 
    <input type="submit" name="submit1" value="a submit button"> 

</form> 

PHP腳本(checkout.php),其處理上述形式的行動:通過

<?php var_dump($_POST); ?> 

測試你的本地計算機上的上述在名爲/ tmp/test /的文件夾中創建兩個文件,然後從shell中運行內置的PHP Web服務器:

php -S localhost:3000 -t /tmp/test/ 

打開你的瀏覽器在http://localhost:3000並親自體驗。

有人會問,爲什麼我們需要提交一個命名按鈕?它取決於後端腳本。例如,WooCommerce WordPress插件不會處理髮布的Checkout頁面,除非提交了Place Order指定按鈕。如果您將其類型從提交提交到按鈕那麼此按鈕將不會被提交,因此Checkout表單將永遠不會被處理。

這可能是一個小細節,但你知道,魔鬼是在細節。

0

type='Submit'設置爲轉發&獲取BACK-END(PHP,.NET等)的值。 type='button'將反映正常的按鈕行爲。