如果

时间:2018-04-11 14:24:06

标签: javascript validation if-statement

我一直在为表单创建JavaScript验证,但遇到了困难。目前有两个部分(目前)用于JavaSCript检查(电子邮件和短信)。脚本只运行电子邮件,而不是在检查短信时应该同时检查两者。如果两者都没问题则返回true。有什么想法吗?

function validateForm() {
    var emailBoxChecked = document.getElementById("checkemail").checked
    var emailBoxChecked = document.getElementById("checksms").checked
    var errordiv = document.getElementById('error');
    var errorsms = document.getElementById('errorsms');
        /*postOptOutSix.checked = false;
        postOptOutForever.checked = false*/
    // Conditions
    if (document.getElementById("emailradios") ==null && document.getElementById("emailforever") ==null) {
        if (document.getElementById("smsforever") ==null && document.getElementById("smsforever") ==null) {
            return true;
        }
        else if (document.getElementById("checksms").checked ==false && document.getElementById("smsOptOutSix").checked ==false && document.getElementById("smsOptOutForever").checked ==false) {  
            errordiv.innerHTML += "<p id='errorp' style='color:red;'>*SMS - Please either opt-in post or select either of the options.'";
            return false;
        } else {
            return true;
        }
    }
    else if (document.getElementById("checkemail").checked ==false && document.getElementById("emailOptOutSix").checked ==false && document.getElementById("emailOptOutForever").checked ==false) {  
        errorsms.innerHTML += "<p id='errorp' style='color:red;'>*Email - Please either opt-in post or select either of the options.'";
        return false;
    } else {
        return true;
    }
}

3 个答案:

答案 0 :(得分:0)

class Foo
{
public:
    void One();
};

void Two(Foo&);

int main()
{
    Foo f;
    f.One();
    f.Two(); // This was valid in the proposal I saw
}

您正在设置来自不同元素的相同变量。难道不是这样的吗?

var emailBoxChecked = document.getElementById("checkemail").checked
var emailBoxChecked = document.getElementById("checksms").checked

答案 1 :(得分:0)

使用HTML requiredpattern属性以及返回inputElement.checkValidity()true的{​​{1}}。例如,您可以查看false以确保所有输入都有效,如果是,则启用提交按钮,如果没有则禁用它。

答案 2 :(得分:0)

您需要将2个条件检查分开,然后在返回之前检查是否有些检查失败。

这样的事情可以解决问题:

function validateForm () {
    var errors = [];
    // Empty any previous errors
    document.getElementById('error').innerHTML = "";

    // Check for SMS
    if (!document.getElementById("checksms").checked && 
        !document.getElementById("smsOptOutSix").checked && 
        !document.getElementById("smsOptOutForever").checked) {
        // add the SMS error to the array
        errors.push("<p id='errorp' style='color:red;'>*SMS - Please either opt-in post or select either of the options.'");
    }

    // Check for Email
    if (!document.getElementById("checkemail").checked && 
        !document.getElementById("emailOptOutSix").checked && 
        !document.getElementById("emailOptOutForever").checked) {  
        // add the Email error to the array
        errors.push("<p id='errorp' style='color:red;'>*Email - Please either opt-in post or select either of the options.'");
    }

    // Display the error(s) if any
    if (errors.length > 0) {
        errors.forEach(function (err) {
            document.getElementById('error').innerHTML += err;
        });
        return false;
    }

    return true;
}

另外,我注意到id='errorp'有两次。重命名其中一个。