jquery提交事件并返回false

时间:2010-02-03 15:03:23

标签: javascript jquery forms

您检查表单中的空白字段并提醒用户。但当提醒用户它发布数据时,我不能返回false而不是刷新页面

$('#loginAccount').submit(function() {
    $(this).find(':input:text').each(function(i) {
        if($(this).val()=="") {
            // alert($('label').eq(i).html())
            $('#alert3').html('Please fill all fields.');
            return false;
        }
    });
});

4 个答案:

答案 0 :(得分:7)

$('#loginAccount').submit(function() {
    var valid = true;
    $(this).find(':input:text').each(function(i) {
        if($(this).val() == "") {
            // alert($('label').eq(i).html())
            $('#alert3').html('Please fill all fields.');
            valid = false;
        }
    });
    return valid;
});

您目前正在从每个人返回。您需要做的是跟踪它是否有效,然后将该值用作提交的回报。

答案 1 :(得分:5)

return false;在jQuery()中具有不同的含义。它用于打破每个。也许您可以设置在each()之后观察到的标志,以查看验证是否成功。

答案 2 :(得分:1)

您需要在submit函数中返回false,而不是each函数:

$('#loginAccount').submit(function() {
    var isValid = true;
    $(this).find(':input:text').each(function(i) {
        if($(this).val()=="")
        {
            isValid = false;
            //alert($('label').eq(i).html())
            $('#alert3').html('Please fill all fields.');

        }
    });
    return isValid;
});

答案 3 :(得分:0)

也许你应该使用closure来返回一个值?

    $('#loginAccount').submit(function() {
           var result = true;    
            $(this).find(':input:text')
                 .each(function(i) {
                if($(this).val()=="")
                {
                    //alert($('label').eq(i).html())
                    $('#alert3').html('Please fill all fields.');
                    result = false;
                }
            });
            return result;
            })