Jquery: return: false при отправке не работает - форма все еще отправляется

Есть ли причина, по которой форма все еще отправляется? Проверки проверки работают, но если все введено правильно, форма отправляется, а запрос ajax не срабатывает.

$("#formRegister").submit(function () {
// Start problem
    var mode = $("registerMode").val();
// End problem
    var username = $("#registerUsername").val();
    var password = $("#registerPassword").val();
    var passwordConfirm = $("#registerPasswordConfirm").val();
    var avatar = $("#registerAvatar").val();

    if (username == 'Username') {
        $("#registerError").html('You must enter a username');
    } else if (password == 'Password') {
        $("#registerError").html('You must enter a password');
    } else if (password != passwordConfirm) {
        $("#registerError").html('Your passwords did not match');
    } else if (avatar == 'Avatar URL') {
        $("#registerError").html('You must enter the URL for your combine avatar');
    } else {
        $.ajax({
            type: "POST",
            url: "processUsers.php",
            data: {
                mode: mode,
                username: username,
                password: password,
                avatar: avatar
            },
            dataType: "JSON",
            success: function(data) {
                alert('success!');
            }
        });
    }

    return false;
});

person Styles2304    schedule 20.08.2013    source источник
comment
не могли бы вы также дать HTML   -  person Puneet    schedule 20.08.2013
comment
где переменные объявляются для опции «данные»?   -  person hex4    schedule 20.08.2013
comment
любая ошибка в консоли вашего браузера   -  person Arun P Johny    schedule 20.08.2013
comment
Вы можете использовать Firebug, чтобы добавить точки останова и просмотреть свой Javascript, чтобы увидеть, по какому пути он идет.   -  person tomaroo    schedule 20.08.2013
comment
Проблема была в том, что я определял режим. Он был удален при редактировании, и, поскольку раньше он работал, я не искал в этой области ошибки.   -  person Styles2304    schedule 20.08.2013


Ответы (1)


Это должно работать

$("#formRegister").submit(function (event) {
var username = $("#registerUsername").val();
var password = $("#registerPassword").val();
var passwordConfirm = $("#registerPasswordConfirm").val();
var avatar = $("#registerAvatar").val();

if (username == 'Username') {
    $("#registerError").html('You must enter a username');
} else if (password == 'Password') {
    $("#registerError").html('You must enter a password');
} else if (password != passwordConfirm) {
    $("#registerError").html('Your passwords did not match');
} else if (avatar == 'Avatar URL') {
    $("#registerError").html('You must enter the URL for your combine avatar');
} else {
    $.ajax({
        type: "POST",
        url: "processUsers.php",
        data: {
            mode: mode,
            username: username,
            password: password,
            avatar: avatar
        },
        dataType: "JSON",
        success: function(data) {
            alert('success!');
        }
    });
}
event.preventDefault();
});
person Guerra    schedule 20.08.2013
comment
@Guerra... LOL опередил меня на 10 секунд... забыл войти. - person Epiphany; 20.08.2013
comment
@Epiphany LOL, я учусь быстрее =]] - person Guerra; 20.08.2013
comment
return false; тоже должен работать... это программный эквивалент e.preventDefault(); и e.stopPropagation(); - person tomaroo; 20.08.2013
comment
@tomaroo, я много раз видел в Firefox, что возврат false не работает. Итак, return false тоже должен работать, но это не так... так что попробуйте preventDefault, если все еще не работает.... у вас проблема =]] - person Guerra; 20.08.2013
comment
@Guerra Я никогда не сталкивался с этим раньше. Это хорошо знать. Возможно, у вас есть демонстрация того, что происходит, или какая-нибудь интернет-статья или документация? - person tomaroo; 20.08.2013