表单提交且函数运行后内容立即消失

问题描述 投票:0回答:2

我是 Javascript 和 HTML 新手。

我有以下 HTML 表单:

<div id="form-select">
    <form id="date_form" action="" METHOD="POST">
        <datalist id="dates">
            <option value="February 7">February 7</option>
            <option value="February 14">February 14</option>
            <option value="February 21">February 21</option>
            <option value="February 28">February 28</option>
        </datalist>
        <input type="text" class="input" name="data" id="date" value="" list="dates" placeholder="pick a date"><br>
        <input type="submit" name="submit" onClick="myFunction()"/>
    </form>
 </div>

这是名为 script.js 的文件中的 javascript。 js 文件在标头中链接为 'script type="text/javascript" src="script.js':

function myFunction(){
   var input = document.getElementById("date").value;
   if(input==="February 7"){
      document.getElementById('w1').innerHTML = "<h2> HEADING </h2>;
   }
 };

当我填写表单并点击提交时,JavaScript 正确执行了该函数,但结果(即向 html 添加标题)发生了几毫秒,然后消失并重置为我点击提交之前的原始页面。

如何才能使 HEADING 的插入保持永久?

javascript html css forms submit
2个回答
12
投票

将侦听器移至表单的提交处理程序。让函数返回 false 以停止提交:

<form id="date_form" onsubmit="return myFunction();" ...>

将听者从按钮上取下:

<input type="submit">

不要将其命名为submit,因为这会掩盖表单的提交方法,因此您无法调用它。如果表单上有两个或多个按钮并且您想知道使用哪一个来提交表单,则提交按钮只需要一个名称。

您的代码中有一个错误,它缺少结束双引号:

function myFunction(){
   var input = document.getElementById("date").value;
   if(input==="February 7"){
      document.getElementById('w1').innerHTML = "<h2> HEADING </h2>";
   }
   return false; // to stop submission
};

这可能会也可能不会解决你的问题,你还没有说出你实际上想要做什么。


0
投票

在函数中添加这一行: event.preventDefault();

© www.soinside.com 2019 - 2024. All rights reserved.