我正在尝试用javascript创建一个页面。我对这一切都很陌生,所以请耐心等待。
我有一个表单,当你按下提交时,我有以下位,看看这些字段是否留空:
function calculatePrice()
{
var GasPrice = document.getElementById("number1").value;
var Distance = document.getElementById("number2").value;
var Mileage = document.getElementById("number3").value;
var norepeat = false;
if (norepeat==false && (GasPrice =="" || Distance =="" || Mileage ==""))
{
var para=document.createElement("p");
para.setAttribute("class", "error");
var node=document.createTextNode("All fields must be completed");
para.appendChild(node);
var element=document.getElementById("content");
element.appendChild(para);
var norepeat = true;
}
我将错误创建为出现的段落标记。问题是,当我多次按提交时,它每次都会写入错误消息。我尝试了norepeat变量的东西,但它似乎没有工作。有什么帮助吗?
答案 0 :(得分:1)
虽然我不完全确定你的意图,但它必须看起来更像:
var norepeat = false;
function calculatePrice() {
if(!norepeat && (/* other conditions here */)) {
norepeat = true;
}
return !(/* other conditions above */);
}
在全局范围内定义norepeat
的位置。另外,请记住使用===
而不是==
。在测试它之前修剪弦不会是一个可怕的想法......
但是,如果用户没有纠正错误,您是不是希望错误仍然存在 - 这不是验证点吗?
答案 1 :(得分:0)
我认为你要做的就是这个。这假设你添加一个新的div“myError”来保存你的错误信息。如果验证没有通过,您还需要考虑不提交表格。
function calculatePrice() {
var GasPrice = document.getElementById("number1").value;
var Distance = document.getElementById("number2").value;
var Mileage = document.getElementById("number3").value;
var error = document.getElementById("myError");
if (GasPrice == "" || Distance == "" || Mileage == "") {
error.style.display = "block";
return false;
}
else {
error.style.display = "none";
return true;
}
}