HTML 表單預設行為:當表單內只有一個單行輸入框,或使用者在任一輸入框按下 Enter,瀏覽器會觸發表單的 submit 事件,導致頁面重新載入(或跳轉至 action 指定的 URL)。
onsubmit="return false" 或 event.preventDefault()<form onsubmit="return validateForm(this)">
<input name="username" required>
<input name="password" type="password" required>
<button type="submit">登入</button>
</form>
<script>
function validateForm(form) {
if (!form.username.value) { alert('請輸入帳號'); return false; }
if (!form.password.value) { alert('請輸入密碼'); return false; }
// 通過驗證可 return true 送出,或這裡改用 AJAX 送出後 return false
return false; // 防止頁面跳轉
}
</script>
onkeydown="return event.key!=='Enter'"<input onkeydown="return event.key!=='Enter'">
缺點:使用者無法在多行輸入框換行,且需逐個綁定。
// jQuery
$(document).on('keydown', 'form input', function(e){
if (e.key === 'Enter' && !$(this).is('textarea')) e.preventDefault();
});
// 原生
document.addEventListener('keydown', function(e){
if (e.key === 'Enter' && e.target.tagName === 'INPUT' && e.target.type !== 'textarea') {
e.preventDefault();
}
});
onsubmit 驗證,並視情況回傳 false 或改用 fetch/AJAX 非同步送出。<form> 改為 <div>,按鈕改 type="button",完全繞過瀏覽器預設行為。Enter 觸發提交是瀏覽器標準行為,透過 onsubmit 回傳 false 或 event.preventDefault() 即可控制;配合前端驗證與 AJAX,既保留使用者習慣又避免整頁重整。