【发布时间】:2017-03-26 23:06:20
【问题描述】:
我有一个 HTML 表单。我被要求编写 JS 代码来验证表单中的数据并在同一页面上显示验证结果,而无需提交表单。我被告知让我的 JS 函数(在单击提交时执行)返回 false,以便不提交表单。我这样做了,但是当我运行我的页面时,表单验证的结果在页面上闪烁了半秒钟,然后在提交表单时消失了。我究竟做错了什么?这是我在 JS 中的内容:(第一个函数将事件侦听器添加到表单的提交按钮)
function eventListener(){
var submitBtn = document.getElementById("sub");
submitBtn.addEventListener("click", validate, false);
}
function validate(){
var input1 = document.getElementById("book_1").value;
var input2 = document.getElementById("book_2").value;
var input3 = document.getElementById("book_3").value;
if(input1=="" || input2=="" || input3=="")
window.alert("Error: Please fill in all input fields");
else if(isNaN(input1) || isNaN(input2) || isNaN(input3))
window.alert("Error: Please enter numbers in the input fields");
else{
var total1 = input1*19.99;
var total2 = input2*86;
var total3 = input3*55;
var grandtotal = total1 + total2 + total3;
var container = document.getElementById("container");
var par = document.createElement("p");
container.appendChild(par);
par.innerHTML = "<h3>Basic XHTML (Quantity: " + input1 + "):</h3> $" + (total1)
+ "<br/> <h3>Intro to PHP (Quantity: " + input2 + "):</h3> $" + (total2)
+ "<br/> <h3>Advanced JQuery (Quantity: " + input3 + "):</h3> $" + (total3)
+ "<br/><br/> <h3>Final Total:</h3> $" + grandtotal;
}
return false;
}
window.onload = eventListener;
【问题讨论】:
-
将提交监听器放在表单的提交处理程序上,而不是按钮上。可以在不点击按钮的情况下提交表单,并且从表单的处理程序中取消提交更简单。
标签: javascript