gpt4 book ai didi

javascript - 提交表单后防止重新加载页面。 (没有 Ajax )

转载 作者:行者123 更新时间:2023-11-30 05:52:45 27 4
gpt4 key购买 nike

我是 JavaScript 和 jsp 的新手。我需要提交一个表单,它从输入字段中计算一些值,并在提交后隐藏包含输入字段的 div。提交后,另一个 div 应该变得可见并显示结果和一个新的提交按钮,该按钮再次重新加载 jsp 页面,以便我可以计算其他值。

一切正常,但仍然存在一个问题。提交表单并完成计算后,会显示带有我的结果的新 div 但页面会立即重新加载,因此我没有机会看到我的结果或按下新按钮重新加载页。

现在我正在寻找一种解决方案,除了使用 ajax 和 cookie 来显示结果,而无需重新加载 jsp,直到我按下重新加载按钮。

这是我的js代码:

<script type="text/javascript">
counter = 3;

var myHash = {};

function addInput(e) {
//checking if current input field has already created a new input field.
if (!myHash.hasOwnProperty(e.name)) {

var element = document.createElement("input");

element.setAttribute("name", "number" + counter);
element.setAttribute("onkeyup", "addInput(this)");
element.setAttribute("onchange", "check(this)");
document.getElementById('inputs').appendChild(
document.createTextNode("Zahl " + counter + ": "));
document.getElementById('inputs').appendChild(element);
document.getElementById('inputs').appendChild(
document.createElement("br"));
counter++;
myHash[e.name] = "true";
}

}

function check(e) {
//alert(e.value);
var str = e.value;

//alert(str.match(/\d*/));
if (!(/^\d*.?\d*$|^\d*.?\d*$/.test(str))) {
e.value = "";
alert("Bitte nur Zahlen eingeben.\n(Nachkommastellen mit . oder , trennen)");
//alert("ok");
} else {
//
}
}

function visible() {

document.getElementById("form").setAttribute("style", "display:none");
document.getElementById("result")
.setAttribute("style", "display:block");
return false;
}

这里是我的 jsp 文件的重要部分:

<div id="form" style="width: 350px;">
<fieldset>
<legend style="color: blue; font-weight: bold;">Der summende
Summanden Summer!</legend>
<form method="post">

Zahl 1: <input type="text" name="number1" onchange="check(this)" /><br />

Zahl 2: <input type="text" name="number2" onkeyup="addInput(this)"
onchange="check(this)" /><br />
<div id="inputs"></div>
<br /> <input type="submit" onclick="visible()" value="Summieren">
<input type="reset" onclick="window.location.reload()"
value="Loeschen">

</form>
</fieldset>
</div>
<%
Map<String, String[]> params = request.getParameterMap();

double sum = 0;
String value = "";

for (String param : params.keySet()) {

value = request.getParameter(param);
value = value.replace(",", ".");

if (value != "") {
sum = Double.parseDouble(value) + sum;
}
//out.println(sum);
System.out.println(sum);

}
%>

<div id="result" style="display: none">
<h2>Ergebnis</h2>
<%=sum%>
<input type="submit" onclick="return false;" value="Ergebnis">

</div>

我的问题有解决方案吗?

最佳答案

只需查看您的代码,最简单的方法就是将 onsubmit="return false" 属性添加到您的表单标记中:

<form onsubmit="return false">

这将阻止表单提交与服务器通信的 AKA。您也可以在 javascript 中使用 DOM 选择器获得相同的结果,这可能更清晰。

顺便说一句,您的表单中有一些无效标记,可能会在遍历 DOM 时导致错误。

关于javascript - 提交表单后防止重新加载页面。 (没有 Ajax ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com