Javascript - 如何阻止 onClick 擦除表单/刷新页面
Javascript - how to stop onClick from wiping out the form/refreshing page?
<!DOCTYPE html>
<html>
<HEAD>
<meta charset="utf-8" />
<script language= "javascript">
var array1 = new Array();
function display1()
{
var guest_input = array1;
var input1;
var input2;
var input3;
input1 = document.form1.msg1.value;
input2 = document.form1.msg2.value;
input3 = document.form1.msg3.value;
guest_input[0]=input1;
guest_input[1]=input2;
guest_input[2]=input3;
for (var i=0; i<array1.length; i++)
{
document.write("<ul><li>" +array1[i]+ "</li></ul>");
}
}
</script>
</HEAD>
<BODY>
<form name="form1">
Type in msg 1 : <input type="text" name="msg1"><br>
Type in msg 2 : <input type="text" name="msg2"><br>
Type in msg 3 : <input type="text" name="msg3"><br>
</form>
<input type="button" value="Go!" name="button1" onclick="display1()">
</BODY>
这是非常简单,非常基本的代码。我只是想在做更多事情之前让这件作品工作。
我只是希望在单击按钮后无序列表显示在表单下方,但是为什么当我单击按钮时页面会刷新/擦除表单?将其更改为
onclick="display1(); return false;"
不能解决问题。谢谢!
你需要将列表附加到表单中,给你的表单一个 id 并使用 jquery 来附加它
<form name="form1" id="fo">
Type in msg 1 : <input type="text" name="msg1"><br>
Type in msg 2 : <input type="text" name="msg2"><br>
Type in msg 3 : <input type="text" name="msg3"><br>
</form>
你的 jquery
$('#fo').append("<ul><li>" +array1[i]+ "</li></ul>")
浏览器的默认功能是在提交表单数据时发送表单数据并刷新页面。使用 event.preventDefault()
停止刷新:
.HTML
<input type="button" value="Go!" name="button1" onclick="display1(event)">
.JS
function display1(event)
{
event.preventDefault();
// do rest of the stuff here
}
阅读此内容: event.preventDefault |多核
使用"appendChild"而不是"write",因为您可以覆盖 HTML:
document.getElementsByTagName('body')[0].appendChild("<ul><li>" +array1[i]+ "</li></ul>");
尝试将e.preventDefault();
放在函数的开头,而不是标记中。或者你也可以做return false
.
<script language= "javascript">
var array1 = new Array();
function display1(e)
{
e.preventDefault();
var guest_input = array1;
var input1;
var input2;
var input3;
input1 = document.form1.msg1.value;
input2 = document.form1.msg2.value;
input3 = document.form1.msg3.value;
guest_input[0]=input1;
guest_input[1]=input2;
guest_input[2]=input3;
for (var i=0; i<array1.length; i++)
{
document.write("<ul><li>" +array1[i]+ "</li></ul>");
}
// you could also **return false;** here
}
</script>
因为它的document.write,它覆盖了文档的所有内容,你可以通过查看页面源代码看到它。
添加像div 这样的容器元素并为其分配标记,请参阅下面的修改代码。
<!DOCTYPE html>
<html>
<HEAD>
<meta charset="utf-8" />
<script type="text/javascript" language= "javascript">
var array1 = new Array();
function display1() {
var guest_input = array1;
var input1;
var input2;
var input3;
input1 = document.form1.msg1.value;
input2 = document.form1.msg2.value;
input3 = document.form1.msg3.value;
guest_input[0] = input1;
guest_input[1] = input2;
guest_input[2] = input3;
var xx="";
for (var i = 0; i < array1.length; i++) {
xx = xx + "<ul><li>" + array1[i] + "</li></ul>";
}
document.getElementById("listcontainer").innerHTML=xx;
return false;
}
</script>
</HEAD>
<BODY>
<form name="form1">
Type in msg 1 : <input type="text" name="msg1"><br>
Type in msg 2 : <input type="text" name="msg2"><br>
Type in msg 3 : <input type="text" name="msg3"><br>
<input type="button" value="Go!" name="button1" onclick="return display1();">
</form>
<div id="listcontainer"></div>
</BODY>
</html>
相关文章:
- Jquery提交表单而不刷新
- 单击表单中的按钮会导致页面刷新
- 停止刷新表单,但要发布
- 如何刷新表单的yii2前端验证
- 刷新<表单>送审不起作用
- 阻止 jquery 移动刷新表单提交
- Javascript AppendChild 自动刷新表单
- 我需要刷新表单,但仍然保持复选框的值不变
- CRM 2013:刷新表单或通过浏览器的后退按钮向后导航时出现奇怪的行为
- 如何在表单提交到_blank后刷新表单页面
- CRM 2013:保存后强制刷新表单
- 停止刷新表单
- 使用jQuery Mobile刷新表单页面
- 如何停止随机生成的数字从刷新表单提交
- 提交parse.com后刷新表单
- 提交后,刷新表单页面上的感谢信息
- 在提交时停止自动刷新表单
- 刷新表单结果而不刷新页面
- 在不刷新表单的情况下调用锚链接单击事件上的标记库
- 刷新表单提交不工作