jQuery скрыть форму при отправке? - PullRequest
1 голос
/ 24 декабря 2011

У меня есть настройка формы, в которой пользователь может зарегистрироваться, и при отправке запускается скрипт PHP, который проверяет пользователя, и, как только это делается, он отображает окно сообщения, которое jQuery быстро скрывает, а затем исчезает в течение 1второй.Теперь я хочу скрыть эту форму при отправке, и я подумал, что это может сделать это:

$(document).ready(function() {
    $('div.mainsuccess,div.mainerror').hide(0).fadeIn(1000);
    $('form.register').submit(function() {
        $(this).hide(1000);
    });
});

Где div.mainsuccess - это сообщение об успехе, а form.register - это форма(с классом регистра).Теперь работает первая строка, которая сообщает мне, что скрипт вызывается, но форма вообще не скрывается.Я делаю что-то глупое, но не могу понять, что?

Я пытался просмотреть документацию по jQuery API для submit(), но не могу понять, что говорится.Благодарю.

Ответы [ 4 ]

2 голосов
/ 24 декабря 2011

Вы хотели бы включить вызов ajax (я принимаю сообщение) для вызова php вместо перезагрузки страницы

$('form.register').submit(function(e) {
    e.preventDefault();
    url = $(this).attr('action');
    $.post(url,$(this).serialize(), function(data) {
        alert('success');
        // data will return source code of the URL so you can grab that data and put it somewhere on the script like so.
        $('#result').html($(data).find('form'));//form can be replaced with anything
        // #result is the id of an element you wish to return the info to 
    });
    $(this).hide(1000);
});

И все будет готово.

Подробнее здесь

2 голосов
/ 24 декабря 2011

Я думаю, что причина, по которой это может не работать, заключается в том, что форма отправляет свои данные и ожидает обновления страницы ... это означает, что она остановит весь свой javascript, потому что это бессмысленно ... Я могу ошибаться, но эй, твое скрытие заняло бы 1 секунду, но твоя страница могла бы перезагрузиться быстрее.

$(document).ready(function() {
    $('div.mainsuccess,div.mainerror').hide(0).fadeIn(1000);
    $('form.register').submit(function(e) {
        e.preventDefault();// will stop the form being submited...
        $(this).hide(1000);
        // do ajax here...
        return false;
    });
});

Обновлено

вот список учебных пособий

http://viralpatel.net/blogs/2009/04/jquery-ajax-tutorial-example-ajax-jquery-development.html

http://www.devirtuoso.com/2009/07/beginners-guide-to-using-ajax-with-jquery/

http://www.sitepoint.com/ajax-jquery/

Видео .... http://www.youtube.com/watch?v=0CMTQtnZ0G0

2 голосов
/ 24 декабря 2011

Попробуйте это:

$("form").submit(function(e){
    e.preventDefault();
    $(this).hide(1000);
});
1 голос
/ 24 декабря 2011

Что ж, похоже, что форма обновляется после отправки, поэтому она все еще там.

Я предлагаю использовать что-то вроде формы jQuery: http://jquery.malsup.com/form/

Прочтите его, и вы найдете, как его использовать, и когда оно будет отправлено, оно не обновится, и, используя hide(), вы сможете его скрыть.

N.B. Для использования формы jQuery вам потребуется jQuery, на который есть ссылки в вашем коде.

Наслаждайтесь.

...