4
$(document).ready(function() {

    $('#commentForm').submit(function(){

        return $('input[type=text], textarea').each(function(index){

            if($(this).attr('value') == ""){
                alert(msgHash[$(this).attr('id')]);
                return false;

            }else{

                if(!$(this).attr('value').match(validateHash[$(this).attr('id')])){
                    //Do nothing
                    alert(msgOnError[$(this).attr('id')]);
                    return false;
                }
            }
        });

        return true;
    });
});

这里 msgOnError、msgHash 和 msgHash 是我用来为每个具有特定 ID 的文本框获取消息的映射不幸的是,每个方法都不会返回 false 来取消表单的提交。我究竟做错了什么 ??我是 jQuery 新手,谢谢

4

1 回答 1

13

是的,这正是它的each工作原理。由于它实际上是一个在每次迭代中调用匿名函数的循环,因此退出这些函数也不会退出调用函数。这里返回true和false,实际上分别对应 for循环的continueand break

您需要设置一个布尔标志,然后返回 false(中断),然后在each

于 2009-12-14T10:50:10.183 回答