javascript - 按下 Enter 时提交表单(待办事项列表)
问题描述
我正在使用 HTML 和 JavaScript 构建一个待办事项列表,现在我不仅想通过提交按钮添加输入,而且如果我在页面上的任何位置按下回车,我也想添加输入。我主要想使用 javascript 来创建该功能,html 中没有“onclick”功能。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="style.css" />
<title>To do app</title>
</head>
<body>
<h1>To-Do List</h1>
<form>
<input type="text" placeholder="Add an item!" id="inputField" />
</form>
<button id="submit">Submit</button>
<button id="clear">Clear List</button>
<div id="output"></div>
<script src="script.js"></script>
</body>
</html>
----------------------------------
document.getElementById("submit").addEventListener("click", function () {
submitForm();
});
document.getElementById("clear").addEventListener("click", function () {
document.getElementById("inputField").value = "";
document.getElementById("myOl").innerHTML = "";
});
function submitForm() {
let input = document.getElementById("inputField").value;
let ol = document.createElement("ol");
ol.setAttribute("id", "myOl");
document.body.appendChild(ol);
let y = document.createElement("LI");
let t = document.createTextNode(`${input}`);
y.appendChild(t);
document.getElementById("myOl").appendChild(y);
document.getElementById("inputField").value = "";
}
解决方案
您可以使用keypress
事件侦听器document.addEventListener
并检查event.key
,event.keyCode
和event.which
组合来检查输入键。
不要忘记使用event.preventDefault()
以防止重新加载页面。
document.getElementById("submit").addEventListener("click", function () {
submitForm();
});
document.getElementById("clear").addEventListener("click", function () {
document.getElementById("inputField").value = "";
document.getElementById("myOl").innerHTML = "";
});
document.addEventListener('keypress', function (e) {
const code = (e.keyCode ? e.keyCode : e.which);
if (e.key === 'Enter' || code == 13) {
submitForm();
e.preventDefault();
}
});
function submitForm() {
let input = document.getElementById("inputField").value;
let ol = document.createElement("ol");
ol.setAttribute("id", "myOl");
document.body.appendChild(ol);
let y = document.createElement("LI");
let t = document.createTextNode(`${input}`);
y.appendChild(t);
document.getElementById("myOl").appendChild(y);
document.getElementById("inputField").value = "";
}
<h1>To-Do List</h1>
<form>
<input type="text" placeholder="Add an item!" id="inputField" />
</form>
<button id="submit">Submit</button>
<button id="clear">Clear List</button>
<div id="output"></div>
推荐阅读
- modelsim - vlog-7 错误。无法以读取模式打开设计单元文件
- javascript - 基于 URL 的 React 组件状态
- mysql - 如果字段不为空,MySQL 添加 where 子句
- sql - 如何比较表的多列和多行
- outlook - 展望:每月的第三个星期五设置一次定期会议
- bash - 如何将命令传递给包含管道的 xargs?
- rust-diesel - Diesel 获取单亲和许多孩子 - 火箭
- go - golang io.writer 写完字符串后换行
- javascript - 猫鼬连接:在中间件中调用连接之间的不同行为
- c# - 如何使用 ListBox 的 ItemActivate 事件在 RichTextBox 控件中加载文件?