javascript - 通过 javascript 提交表单
问题描述
我需要通过按回车键在输入字段中提交文本,然后将表单文本放入列表项中。问题是,当我按 Enter 时,它只是刷新页面,什么也没有发生,而且我不能使用任何后端,这纯粹是前端......顺便说一下,这是一个待办事项列表,这是到目前为止我所做的:
<html>
<head>
<title>Site</title>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="HandheldFriendly" content="true">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="style.css">
<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<div class="text">
<h1>To-Do</h1><br>
</div>
<form>
<input type="text" id='uzd' placeholder="Ką reikia atlikti?">
<button type="submit" form="uzd" value="Submit" hidden onsubmit="button()"></button>
</form>
<ul id='uzduotys'>
</ul>
<script src="script.js"></script>
</div>
</body>
</html>
function button(){
var node = document.createElement("Li");
node.setAttribute("class","li-item");
var text = document.getElementById("uzd").value;
if(text===""){
alert("placeholder");
}
else{
var textnode =document.createTextNode(text);
node.appendChild(textnode);
document.getElementById("uzduotys").appendChild(node);
}
}
var list = document.querySelector('ul');
list.addEventListener('click', function(ev) {
if (ev.target.tagName === 'LI') {
ev.target.classList.toggle('checked');
}
}, false);
解决方案
You were almost right: you need to move the onsubmit field to the form element, and add "return false;" to the value of onsubmit, to prevent the form to be really submitted. Then you can also remove the button element which becomes useless. See working code below:
<html>
<head>
<title>Site</title>
<meta charset="UTF-8">
</head>
<body>
<div class="container">
<div class="text">
<h1>To-Do</h1><br>
</div>
<form onsubmit="button(); return false;">
<input type="text" id='uzd' placeholder="Ką reikia atlikti?">
</form>
<ul id='uzduotys'>
</ul>
</div>
</body>
<script language="javascript">
function button() {
var node = document.createElement("Li");
node.setAttribute("class", "li-item");
var text = document.getElementById("uzd").value;
if (text === "") {
alert("placeholder");
} else {
var textnode = document.createTextNode(text);
node.appendChild(textnode);
document.getElementById("uzduotys").appendChild(node);
}
}
var list = document.querySelector('ul');
list.addEventListener('click', function(ev) {
if (ev.target.tagName === 'LI') {
ev.target.classList.toggle('checked');
}
}, false);
</script>
</html>
推荐阅读
- youtube - 这是一个错误还是 YouTube 删除了访问权限?
- java - JApplet 幻灯片中的公共空白绘制(图形 g)错误
- flutter - 如何在 Flutter 中创建从左到右或从上到下的叠加飞溅动画
- ruby - 如何从 rakefile 执行 linux 命令?
- javascript - Jest - AWS Lambda 测试
- angular - Angular 8 ng-bootstrap 5 表格排序不起作用
- maple - 如何在没有内置函数的情况下枚举 maple 中的排列
- javascript - 如何在 UseEffect 中使用 prop 函数?
- python - 在 Chrome 上运行 Django admin 但在 Microsoft Edge 上运行时出现 404 错误
- typescript - 解决 NestJs 动态模块中的循环依赖