1

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変数を試しましたが、機能していないようです。何か助けはありますか?

4

2 に答える 2

1

私はあなたの意図を完全には確信していませんが、それはもっと次のように見える必要があります:

var norepeat = false;

function calculatePrice() {
    if(!norepeat && (/* other conditions here */)) {
        norepeat = true;
    }

    return !(/* other conditions above */);
}

norepeatグローバルスコープで定義されている場所。===また、ではなく使用することを忘れないで==ください。そして、テストする前に文字列をトリミングすることは、恐ろしい考えではありません...

しかし、ユーザーがエラーを修正していなくてもエラーを持続させたくないのではないでしょうか。それが検証のポイントではないでしょうか。

于 2012-11-14T04:09:23.183 に答える
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;
        }
    }
于 2012-11-14T04:21:22.147 に答える