2012-03-30 114 views
1

請記住,用戶不必點擊提交輸入。他們可以選擇並推入。你如何確定使用jQuery提交表單的提交?

因此,考慮表單可以提交的所有方式,如何確定在提交事件中使用哪個表單提交表單。我在這兩個提交元素上有不同的名字。

+3

創建一個隱藏的輸入。在提交之前更改該值。 – 2012-03-30 17:59:43

+0

喬納森,我知道對一個答案做一個簡單的評論感到內疚,但這對我來說是一個很好的答案!你不妨爲它準備一些甜品。 ;-) – 2012-03-30 18:02:02

+2

我會補充說,可以給每個提交按鈕一個唯一的名稱(它應該已經有一個顯示文本的值),然後你可以檢查哪個變量存在來確定哪個窗體被點擊而不使用隱藏的輸入。 – 2012-03-30 18:15:46

回答

4

觸發提交按鈕—的任何操作,無論是實際的鼠標點擊還是某些鍵盤操作—仍會觸發「單擊」事件,並且仍會導致輸入被包含爲表單參數。

也就是說,如果您看到帶有輸入字段名稱和值的表單參數,則知道該提交按鈕已被單擊。

編輯 —如果表單提交是因爲你打在文本字段中「輸入」,瀏覽器選取第一個提交按鈕(我認爲,這似乎是什麼火狐至少一樣)。 (等待;從頭開始;火狐似乎找到下一個具有焦點時,「Enter」鍵按下的元素之後,「提交」輸入...)

這樣:

<form action='whatever' method='post'> 
    <input type='text' name='text'> 
    <input name='submit1' value='submit1' type='submit'> 
    <input name='submit2' value='submit2' type='submit'> 
</form> 

敲擊「回車」在文本字段將導致「submit1 = submit1」作爲表單參數,當「submit1」具有焦點時將會觸擊「Enter」。選中「submit2」並點擊「Enter」會導致參數中包含「submit2 = submit2」。

無論哪種情況,只有一個「提交」輸入顯示在參數列表中。

+0

+1,但帶有一些註釋的片段將使所有更清晰=) – Prusse 2012-03-30 18:16:30

+0

而且這兩個「提交」可以具有相同的「名稱」和不同的「值」。 – Prusse 2012-03-30 18:37:04

+0

您如何看到提交方法中提交了哪些表單參數? – Joe 2012-03-30 19:07:53

1

而不是使用不同的名字,使用不同的值,e.g:

<input type="submit" name="submit" value="Submit A"> 
<input type="submit" name="submit" value="Submit B"> 

你也可以用按鈕來代替投入,如果你想將標籤從不同的值。