仅显示“所有字段必须完成”错误一次

时间:2012-11-14 04:05:36

标签: javascript html

我正在尝试用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变量的东西,但它似乎没有工作。有什么帮助吗?

2 个答案:

答案 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;
        }
    }