通过javascript输入回车提交表单

时间:2018-11-16 12:34:55

标签: javascript html

我需要通过按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);

4 个答案:

答案 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键。

如果您可以避免此问题,请不要解决诸如阻止提交表单之类的问题。