JavaScript 中的輸入鍵事件

Mehvish Ashiq 2023年10月12日
JavaScript 中的輸入鍵事件

本教程演示了每次按下 Enter 鍵時使用 JavaScript enter key event 停止表單提交的不同方法。

注意
除了最後兩個之外,所有示例的 HTML 保持不變。

JavaScript 輸入關鍵事件以防止表單提交

在以下示例中,我們獲取 id 值為 form 的元素並將其儲存到 element 變數中。

之後,addEventListener() 方法用於將事件處理程式附加到元素。每當按下 Enter 鍵時,都會使用 event.preventDefault() 阻止表單提交。

你可以在 this頁面閱讀更多關於這個函式的資訊。event.key 告訴了鍵的名稱,event.which 顯示了鍵的程式碼。

HTML 程式碼:

<!DOCTYPE html>
<html>
	<head>
 		<title>Enter Key Event</title>
 	</head>
	<body>
 		<form action="#" method = "POST" id="form">
 			<label>First name:</label>
 			<input type="text" id="first-name" name="first-name">
 			<br />
 
          	<label>Last name:</label>
 			<input type="text" id="last-name" name="last-name">
 			<br />
 
          	<input id="submitBtn" type="submit" value="Submit" />
 		</form>
	</body>
</html>

JavaScript 程式碼:

var element = document.getElementById('form');
element.addEventListener('keypress', function(event) {
  if (event.key === 'Enter') {
    alert(event.key + ' ' + event.which);
    event.preventDefault();
  }
});

在前面的示例中,我們正在檢測 <form> 元素中的 Enter。但是如果按下 Enter 鍵,下面給出的程式碼會阻止表單提交。

document.addEventListener('keypress', function(e) {
  if (e.keyCode === 13 || e.which === 13) {
    e.preventDefault();
    return false;
  }
});

/*we can write the same logic in jQuery as follows. You
can copy the jQuery code and uncomment to practice. Make
sure to include the jQuery library.*/
/*
$(document).ready(function() {
  $(window).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });
});
*/

click 事件不會讓 Enter 鍵提交表單。

每次點選 id 值為 submitBtn 的元素時,都會提交表單。請參閱以下示例。

document.getElementById('submitBtn').addEventListener('click', function() {
  form.submit();
});

不建議使用以下方法,因為 HTML 和 JavaScript 必須位於單獨的檔案中才能組織程式碼。

儘管如此,你也可以在 <input> 元素中使用 type=submit 中的 onkeypress 屬性,如果按下Enter 鍵,則會阻止表單提交。

我們也可以為每個輸入欄位使用這個屬性。檢查以下示例。

HTML 程式碼:

<!DOCTYPE html>
<html>
	<head>
 		<title>Enter Key Event</title>
 	</head>
	<body>
 		<form action="#" method = "POST" id="form">
 			<label>First name:</label>
 			<input type="text" id="first-name" name="first-name" onkeypress="return 
			(event.keyCode!=13);">
 			<br />
 	
          	<label>Last name:</label>
 			<input type="text" id="last-name" name="last-name" onkeypress="return 
			(event.keyCode!=13);">
 			<br />
 
          	<input id="submitBtn" type="submit" value="Submit" onkeypress="return 
			(event.keyCode!=13);" />
 		</form>
	</body>
</html>

我們還可以在 JavaScript 檔案中建立一個單獨的函式,並在單擊特定按鈕時呼叫它。只有單擊該按鈕,表單才會提交;否則,不是。

請參閱以下程式碼。

HTML 程式碼:

<!DOCTYPE html>
<html>
	<head>
 		<title>Enter Key Event</title>
 	</head>
	<body>
 		<form action="#" method = "POST" id="form">
 			<label>First name:</label>
 			<input type="text" id="first-name" name="first-name">
 			<br />
 
          	<label>Last name:</label>
 			<input type="text" id="last-name" name="last-name">
 			<br />
 			
          	<input id="submitBtn" type="submit" value="Submit" onclick="myfunction()" />
 		</form>
 	</body>
</html>

JavaScript 程式碼:

document.addEventListener('keypress', function(e) {
  if (e.keyCode === 13 || e.which === 13) {
    e.preventDefault();
    return false;
  }
});

function myfunction() {
  document.getElementById('form').submit();
}
作者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相關文章 - JavaScript Event