2016年7月13日 星期三

HTML內,不會因為Enter按鍵而觸發Submit的方式

在撰寫HTML時,會使用<form>來執行動作,例如以下情況就很常見:
<form action="XXXServlet" method = "post">
    <input type = "text" name = "username" value = "">
    <input type = "text" name = "password" value = "">
    <input type = "submit" name = "login" value = "登入" >
</form>
原本的目標是希望使用者輸入完帳號和密碼後,再按下登入的按鈕來進入系統;可是因為輸入的行為也在<form>內,因此在任何一個輸入框內按下Enter鍵的話,就會等於submit,還沒按下按鈕就會執行action。

但是一般在輸入過程中,人們有時會按下Enter,例如中文輸入法等等的情況,也許你正填寫一大堆的資料,結果在第一個輸入格時按下Enter,然後就自動執行action了......

查了一下,基本上歸納出有兩大類手段可解決:使用JavaScript的Listener來監聽按鈕事件,和使用HTML的onkeypress功能來過濾。我首先試了JavaScript的Listener,但怎麼試都不成功,並且這個方式還須寫不少程式碼,所以我選擇使用HTML的onkeypress功能,只需一行就可搞定,並且可寫在你所需要的地方。

所以將程式改為下面的情況,就不會再因為Enter鍵而觸發action了:
<form action="XXXServlet" method = "post" onkeypress="return event.keyCode != 13;>
    <input type = "text" name = "username" value = "">
    <input type = "text" name = "password" value = "">
    <input type = "submit" name = "login" value = "登入" >
</form>
也就是在第一行後面加上onkeypress="return event.keyCode != 13 你也可以視情況,寫在<input>、<select>等內。

簡單又好用,我最喜歡這種的了......

沒有留言:

張貼留言