为什么我得到一个空警报框?

时间:2012-10-20 11:39:44

标签: javascript forms validation

我有js函数onsubmit forms

var bCancel = false;
var errors = new Array();
function validateNewsForm(form) {
    if (bCancel) {
        return true;
    } else {        
        errors = [];        
        var statusArray = new Array();
        statusArray.push(validateRequired(form));
        statusArray.push(validateMaxLength(form));
        statusArray.push(validateDate(form));

        for (status in statusArray) {
            if (!status) {              
                alert(errors.join('\n'));               
                return false;
            }
        }

        return true;
    }
}

validateSmth()函数运行正常。但是当我输入正确的数据时,我无法保存,因为得到空的警报。我只有一条警告消息,现在所有验证函数都给出了真实(如果数据正确)

为什么我会得到空警报?

2 个答案:

答案 0 :(得分:3)

for (status in statusArray) {
    if (!status) {       

for in循环为您提供密钥。对于数组,这些是索引。因此,您有效地执行了!0!1等,!0评估为true

您想要一个正常的for循环:

for(var i = 0; i < statusArray.length; i++) {
    if (!statusArray[i]) {

此外,您还在一起使用[]new Array()。最好在任何地方使用[]

答案 1 :(得分:1)

因为status = 0!状态为true。 修改后的代码:

for (var status  = 0; status < statusArray.length; status ++) {
            if (!statusArray[status] ) {              
                alert(errors.join('\n'));               
                return false;
            }
        }