我是 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 的插入保持永久?
将侦听器移至表单的提交处理程序。让函数返回 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
};
这可能会也可能不会解决你的问题,你还没有说出你实际上想要做什么。
在函数中添加这一行: event.preventDefault();