0

これをできる限り説明しようと思います。さて、ここに私のコードがあります:

function validation() {

    var name = document.getElementById("name").value;
    var email = document.getElementById("email").value;
    var subject = document.getElementById("subject").value;
    var message = document.getElementById("message").value;
    var at = "@";
    var dot = ".";
    var lat = email.indexOf(at);
    var lstr = email.length;
    var ldot = email.indexOf(dot);

    var success = true;

    if (name == null || name == "") {
        success = false;
        document.getElementById("name-error").innerHTML = "I want to know who you are!";
    }

    if (document.contact.name.value.length <= 5) {
        success = false;
        document.getElementById("name-error").innerHTML = "Full name, please!";
    }

    if (email.indexOf(at) == -1 || email.indexOf(at) == 0 || email.indexOf(at) == lstr) {
        success = false;
        document.getElementById("email-error").innerHTML = "That's not an email!";
    }

    if (email == null || email == "") {
        success = false;
        document.getElementById("email-error").innerHTML = "Give me your email!";
    }

    if (document.contact.email.value.length <= 8) {
        success = false;
        document.getElementById("email-error").innerHTML = "Email is too short!";
    }

    if (subject == null || subject == "") {
        success = false;
        document.getElementById("subject-error").innerHTML = "I need a subject!";
    }

    if (document.contact.subject.value.length <= 5) {
        success = false;
        document.getElementById("subject-error").innerHTML = "A longer subject would be nice.";
    }

    if (message == null || message == "") {
        success = false;
        document.getElementById("message-error").innerHTML = "Don't forget your message!";
    }

    if (document.contact.message.value.length <= 30) {
        success = false;
        document.getElementById("message-error").innerHTML = "Your message is too concise!";
    }

    return success;

}

私の問題は、ID の値が空の場合でも、短すぎると表示されることです。たとえば、送信ボタンをクリックすると、名前のフィールドが空でも短すぎると表示されます。name == "" (これは空です) の場合、「あなたが誰であるか知りたい!」と述べたと思います。しかし、今では、name の値が <= 5 の場合に表示されるサポートである "フルネームをお願いします" と言うだけです...空の場合ではありません。私が言っていることを理解しますか?

4

3 に答える 3

2

elseif2 つの別個の独立した条件を持つ代わりに、それを にします。

if(name == null || name == "") {
success = false;
  document.getElementById("name-error").innerHTML = "I want to know who you are!";
}
else if(document.contact.name.value.length <= 5) {
 success = false;
document.getElementById("name-error").innerHTML = "Full name, please!";  
}
于 2013-06-12T06:21:36.270 に答える
1

フィールドに関連するすべての条件を only として言及していますが、実際にはorステートメントifとして言及する必要があります。if.. elseif... else if.. else

if ステートメントのみに言及すると、関連するすべてのコードがフィールドに実行され、最後に、「Email フィールド」条件innerHTMLで常に「Email is too short! 」である後者の値が表示されます。

于 2013-06-12T06:21:19.353 に答える