2009-03-06 4 views
2

На моей странице у меня есть формы, для которых по умолчанию используется .hide() при загрузке страницы. Эти две формы - создание учетной записи и вход в систему. Они отображаются пользователю, как только они нажимают соответствующую ссылку (.show()).jquery: скрыть/показать что-то после отправки формы/перезагрузки страницы

Очевидно, что если у вас есть сбой в любой форме, я бы хотел, чтобы форма оставалась открытой, а не скрывалась после загрузки страницы с отправки.

В настоящее время формы используют простую форму публикации html для доступа к базе данных. Будет ли лучший способ сделать это с помощью jquery, который не слишком сложный? (Я все еще достаточно новое для него, но обучение)

Благодаря

ответ

3

Вы можете назначить обработчик для действия «submit» формы и делать с ним все, что вам нравится. Отправьте его асинхронно, снова удалите форму, оставьте ее там, что угодно. Вот отправная точка:

$('#myloginform').submit(function() { 
    var form = $(this); 
    $.post(
    form.attr('action'), 
    form.serialize(), 
    success: function(response) { 
     // do something when all is well 
     form.hide(); 
    }, 
    failure: function(respones) { 
     // do something when everything explodes 
     form.addClass('error'); 
    } 
); 
    return false; // don't fire the regular handler 
}); 

Документация API JQuery даст вам более подробную информацию о как обработчик submit (и подобные), а также $.post и друзей.

редактировать: Этот код должен идти в свой $(document).ready обработчик, я предполагаю, что у вас уже есть свои show с и hide сек там.

0

Я хотел бы попробовать jQuery Form Plugin. Это позволяет вам публиковать форму с помощью ajax.

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

При ошибке вы можете отобразить сообщение об ошибке и сохранить пользователя в форме.

+0

Я пробовал использовать это недавно, но смутился в какой-то момент - может еще раз взглянуть. Спасибо. – scrot

0

Предполагая, что вы не можете использовать ajax, добавьте что-то к URL-адресу или телу страницы, где говорится об ошибке. Затем сделайте что-нибудь вроде ..

jQuery(document).ready(function() 
{ 
    if(form_error) // check for the error in some way (query_string, a div with an 'error class' 
    { 
    jQuery('.form-selector').show(); 
    } 
}); 
Смежные вопросы