JavaScript と jsp は初めてです。入力フィールドからいくつかの値を計算し、div
送信後に入力フィールドを含むフォームを非表示にするフォームを送信する必要があります。送信後、別div
の値が表示され、結果と新しい送信ボタンが表示され、jsp ページが再度リロードされるため、他の値を計算できます。
すべてが機能していますが、まだ 1 つの問題が残っています。フォームが送信されて計算が完了すると、新しいdiv
結果が表示されますが、すぐにページがリロードされるため、結果を表示したり、ページをリロードするための新しいボタンを押したりする機会がありません。
今、リロードのボタンを押すまでjspをリロードせずに結果を表示するためにajaxとcookieを使用する以外の解決策を探しています。
これは私の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>
私の問題の解決策はありますか?