2017-08-11 254 views
1

對於表單,無需提交按鈕,帶有1個文本輸入,按Enter鍵提交。表單無提交按鈕輸入

對於窗體,如果沒有提交按鈕,超過1個文本輸入,請不要在Enter上提交。

兩者都不應該提交回車?

<!-- This one do submit on Enter --> 
 
<form action="/"> 
 
    <input type="text" name="firstname" value="Mickey"> 
 
</form> 
 

 
<!-- This one do not submit on Enter --> 
 
<form action="/"> 
 
    <input type="text" name="firstname" value="Mickey"> 
 
    <input type="text" name="lastname" value="Jerry"> 
 
</form>

+3

https://www.tjvantoll.com/2013/01/01/enter-should-submit -forms-stop-messing-that-that /#無提交按鈕 –

+0

@racz_gabor將其作爲答案! (用於參考HTML規範4.10.22.2) –

回答

0

一般來說,它是不行的壓制回車鍵的方式來提交表單。這被放棄,您可以實現這種功能,使用JavaScript的jQuery庫(它會更容易使用)。

這是您的HTML的修改版本。我添加了一個數據屬性,以確定這些形式,這不會對Enter鍵提交:

<!-- This one WILL NOT submit, when the Enter key is pressed --> 
<form action="/" data-disable-enter="1"> 
    <input type="text" name="firstname" value="Mickey"> 
</form> 

<!-- This one WILL submit, when the Enter key is pressed 
    If you want to suppress the Enter key submission, add the data attribute data-disable-enter="1" --> 
<form action="/"> 
    <input type="text" name="firstname" value="Mickey"> 
    <input type="text" name="lastname" value="Jerry"> 
</form> 

這裏是JavaScript代碼,使用jQuery庫來抑制回車鍵提交表單。附上一個事件監聽器,用於偵聽每個表單元素(input,select和textarea)上​​事件的所有表單中具有數據屬性data-disable-enter="1"的所有表單。如果按下的鍵碼是13(which means "Enter"),那麼我們將阻止與按鍵相關的默認操作,在我們的例子中是表單提交。

jQuery("form[data-disable-enter='1']").find("input, select, textarea").on("keydown", function(e){ 
    // 13 is the key code for the Enter key 
    if(e.keyCode === 13){ 
     e.preventDefault(); 
    } 
}); 
+0

AFAIK OP詢問爲什麼表單沒有提交'submit'按鈕/輸入,他沒有試圖禁用提交本身 –

+0

我應該刪除我的答案嗎? – thexpand

+1

這隻取決於你!如果它沒有得到任何downvote,你可能會留在那裏,以防將來有人需要它 –