2016-06-13 73 views
9

說,我有一個文本輸入和提交按鈕的形式。爲什麼在提交表單時點擊按鈕?

如果表單中沒有按鈕,只需提交事件觸發器,但如果至少有一個沒有鍵入屬性的按鈕或type="submit",它也會點擊它。

現在,當我在輸入中輸入內容,然後按Enter鍵時,我看到觸發了按鈕單擊和表單提交事件。

實施例:

<form> 
 
    <input type="text" /> 
 
    <button onclick="alert('submitted');">Submit</button> 
 
</form>

我想的形式自動地點擊表格上的按鈕提交事件。

我不知道這種行爲的起源和原因? 爲什麼我提交表單時需要點擊按鈕?

+2

[點擊事件按鈕時觸發提交表單時輸入](http://stackoverflow.com/questions/11760030/click-event-on-button-is-trigged-when-submitting-a -form-with-enter) –

+3

這不是,我真的好奇原因,而不是如何解決這個問題。 –

+0

閱讀答案的第二個評論。 –

回答

8

From the spec

4.10.22.2 Implicit submission

如果用戶代理支持讓用戶提交表單暗示(例如,在某些平臺上打,而文本字段的重點是隱含提交表單「回車」鍵),然後這樣的形式其默認按鈕具有已定義的激活行爲必須使用戶代理在該默認按鈕上運行合成點擊激活步驟。

6.3 [synthetic click] Activation

在HTML的某些元件具有活化行爲,這意味着,用戶可以激活它們。這會觸發一系列依賴於激活機制的事件,並且通常會導致點擊事件,如下所述。

用戶代理應允許用戶手動觸發具有激活行爲的元素,例如使用鍵盤或語音輸入或通過鼠標單擊。當用戶以非點擊的方式觸發具有定義的激活行爲的元素時,交互事件的默認操作必須是對元素執行合成點擊激活步驟。

See full script here


所以按Enter被處理爲您的麥克風說submit(用語音輸入設備)。您的瀏覽器應該像用戶點擊該按鈕一樣正確處理單擊事件附加功能,並改善無法使用鼠標的人員的可訪問性。

+0

@SergeiBasharov對你來說已經夠清楚了還是你還有其他問題? –

-2

它實際上不會自動按下按鈕,這不是提交表單的內容。表單正在提交,因爲這是文本框的默認特徵 - 如果您在文本框中有焦點,按回車鍵會導致嘗試提交表單。 本文將進入一個更深層次的解釋:https://www.tjvantoll.com/2013/01/01/enter-should-submit-forms-stop-messing-with-that/

編輯:只有 1)提交的形式存在按鈕,或 2)形式:其實,更具體,形式將只能提交上的回車鍵,如果包含一個文本輸入

如果這些條件都不是真的,那麼回車鍵不應提交表單