0

我有提交表单的js函数

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() 函数工作正常。但是当我输入正确的数据时,我无法保存,因为得到空警报。我只有一条警报消息,现在所有验证功能都为真(以防数据正确)

为什么我会收到空​​警报?

4

2 回答 2

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()一起。最好在[]任何地方使用。

于 2012-10-20T11:42:55.243 回答
1

因为 for status = 0!status 将是true. 修改后的代码:

for (var status  = 0; status < statusArray.length; status ++) {
            if (!statusArray[status] ) {              
                alert(errors.join('\n'));               
                return false;
            }
        }
于 2012-10-20T11:46:46.347 回答