我需要通过按Enter键在输入字段中提交文本,然后将表单文本放入列表项中。问题是,当我按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);
答案 0 :(得分:1)
您几乎是正确的:您需要将onsubmit字段移至form元素,并添加“ return false;”。为onsubmit的值,以防止真正提交表单。然后,您也可以删除不再有用的按钮元素。请参见下面的工作代码:
<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>
答案 1 :(得分:0)
您可以利用以下事实:默认情况下,使用Enter键提交表单。但是,您需要使用onsubmit
替换函数的默认提交行为(即提交数据),并使用return false;
阻止默认行为:
<form onsubmit="handleSubmitSomehow(event); return false">
<input type="text" id='uzd' placeholder="Ką reikia atlikti?">
<button type="submit" value="Submit"></button>
</form>
答案 2 :(得分:0)
您可以尝试这样的事情
enter
键,则将输入的值添加为列表项。
function validate(e, thisObj) {
if (e.keyCode == 13) {
e.preventDefault();
//console.log(thisObj.value);
var ul = document.getElementById("uzduotys");
var li = document.createElement("li");
li.innerHTML = thisObj.value;
ul.appendChild(li);
return false;
}
return true;
}
<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?" onkeypress="return validate(event, this)">
</form>
<ul id='uzduotys'>
</ul>
</div>
</body>
</html>
答案 3 :(得分:0)
如果您不将表单提交到某个后端,我将根本不使用任何表单,而将keyup侦听器用作input元素上的enter键。
如果您可以避免此问题,请不要解决诸如阻止提交表单之类的问题。