2010-01-24 41 views
39

假設我有以下的HTML表單:如果一個HTML表單有兩個<input type =「submit」>按鈕,我怎麼知道點擊了哪個?

<form> 
... 
<input type="submit" name="queue" value="Queue item"> 
<input type="submit" name="submit" value="Submit item"> 
</form> 

我怎麼知道用戶點擊了哪個按鈕(不使用JavaScript)?

我查看了提交的數據,看起來當點擊"Queue Item"然後"queue" = "Queue Item"被髮送到服務器。當點擊"Submit item"然後"submit" = "Submit item"集發送。

我可以依靠這種行爲嗎?它是否記錄在HTML表單的標準中?你們怎麼做?

+1

可能重複[兩個提交按鈕在一種形式](http://stackoverflow.com/questions/547821/two-submit-buttons-in-one-form ) –

回答

49

是的,你可以依靠這個;它完全記錄在here。具體相關行如下:

當表單提交處理時,某些控件的名稱與其當前值配對,這些對與表單一起提交。那些提交了名稱/值對的控件稱爲成功控件。

如果表單包含一個以上的提交按鈕,只有激活提交按鈕是成功的。

+13

當用戶點擊輸入按鈕而不是按下按鈕時,表單上的第一個提交按鈕將成爲活動按鈕。 – Scharrels

+4

不,你實際上不能依賴這種行爲。在IE6中,您將獲得提交的兩個按鈕的值 - 僅僅因爲它的標準並不意味着它的正確實施。 – Erik

+0

Sh * t。 Erik,我該怎麼做? – bodacydo

3

你可以依靠這種行爲。你會得到輸入的價值。我將使用javascript來切換隱藏的表單值,但由於您沒有提到javascript,因此您沒有多種選擇。

這是一個標準。由於它是input標籤,並且有value,這意味着您可以提交value

4

是的,你可以依靠這種行爲。

當單擊<input type="submit" name="queue" value="Queue item">時,字段「隊列」將被設置並且「提交」將不會被執行。

而另一個被點擊時,字段「提交」將被設置,並且「隊列」將不會。

如果您不確定這一點,可以將它們拆分爲兩種形式,並以此方式處理。

0

將窗體拆分爲兩種形式,複製其他動作所需的任何其他輸入。或者,如果您真的需要知道用戶是否想「排隊或提交」該項目,請將這兩個提交按鈕更改爲無線電選擇以在兩個選項之間切換,並且有一個新的單獨的「提交表單」按鈕。

在這種情況下,如果您想要一個單擊選項,您可以使用Javascript來檢測何時選中一個單選按鈕,並立即自動提交表單。 (使用Javascript的用戶界面,而不是表格處理)

相關問題