2

JavaScript のバリデーションに少し問題があります。

<form action="insert.php" id="form" name="form" method="post" 
    onSubmit="return validate()">
    <pre>
        Vul hier de/het E-mail adres(sen) in
        <textarea name="email" rows="5" cols="50"></textarea><br>
        Typ hier de E-mail
        <textarea name="text" rows="5" cols="50"></textarea><br>
        <input type="submit" name="Submit" value="Submit">
    </pre>
</form>

ご覧のとおり、2 つのテキストエリアがあります。上のテキスト領域では、1 つまたは複数の電子メール アドレスを下に入力し、下のテキスト領域では電子メール自体を作成します。次に、送信をクリックすると、指定したすべてのメールアドレスにメールが送信されます。

これで、両方のテキストエリアの検証を行いました:

function explodeArray(emailID, delimiter) {
    tempArray = new Array(1);
    var Count = 0;
    var tempString = new String(emailID);

    while (tempString.indexOf(delimiter) > 0) {
        tempArray[Count] = tempString.substr(0, tempString.indexOf(delimiter));
        tempString = tempString.substr(
            tempString.indexOf(delimiter) + 1, 
            tempString.length - tempString.indexOf(delimiter) + 1
        );
        Count = Count + 1
    }

    tempArray[Count] = tempString.replace("\r", "");
    return tempArray;
}

function validate() {
    var emailID = document.form.email;
    var delimiter = "\n";
    var emailArray = explodeArray(emailID.value, delimiter);
    var textID = document.form.text;
    var length = emailArray.length,
        element = null;
    for (var i = 0; i < length; i++) {
        emailVar = emailArray[i];

        if (emailVar == null) {
            alert("Email-adres bestaat niet")
            emailID.focus()
            return false
        }
        if (emailVar == "") {
            alert("Email-adres veld is leeg")
            emailID.focus()
            return false
        }
        if (checkEmail(emailVar) == false) {
            emailVar.value = ""
            alert("Ongeldig E-mail adres");
            emailVar.focus()
            return false
        }
    }
    if ((textID.value == null) || (textID.value == "")) {
        alert("E-mail textveld is leeg")
        textID.focus()
        return false
    }
    document.getElementById("form").submit();
    return true
}

function checkEmail(hallo) {
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(hallo)) {
        return true
    }
    return false
}

(おそらく関係のないコードもたくさんコピーしました。申し訳ありませんが、念のため全体をコピーしただけです...)

今何機能するかは次のとおりです。

-両方のテキストエリアが空の場合は送信されません。

-メールアドレスが有効である、下部のテキストエリアが空の場合は送信されません。

機能しないのは次のとおりです。

-メールアドレスが無効な場合でも、下部のテキストエリアがまだ空の場合でも、フォームは送信されます。

ここで何が間違っている可能性があるのか​​ を何時間も理解しようとしてきました.googleでstackoverflowをチェックしましたが、実際には何も見つかりませんでした. ここで私が間違っていることを誰か教えてもらえますか?

前もって感謝します。

4

1 に答える 1

0

あなたはemailVar.focus();実行されないを使用していました。

ここでは、固定:ライブ デモ

if (checkEmail(emailVar) == false) {
    alert("Ongeldig E-mail adres");
    emailID.focus();
    return false;
}
于 2013-02-07T14:30:32.107 に答える