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()関数は正常に機能します。しかし、正しいデータを入力すると、アラートが空になるため保存できません。警告メッセージが1つだけあり、すべての検証関数がtrueを返します(データが正しい場合)

空のアラートを受け取ることができるのはなぜですか?

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

status = 0ステータスになりますtrue。変更されたコード:

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