2012-07-03 6 views
0

У меня есть форма во всплывающем окне jQuery на веб-странице. Всплывающее окно jQuery представляет собой div с именем .vote-form и форма внутри него имеет имя «#form».jQuery - Обновить содержимое DIV

Когда форма отправлена, содержимое внутри всплывающего окна jQuery изменяется на сообщение об успешном завершении. Мне нужно сделать так, чтобы, когда всплывающее окно jQuery закрыто, сообщение об успешном удалении удаляется и форма возвращается к исходной форме, так что когда всплывающее окно jQuery снова открывается, форма снова отображается и NOT сообщение об успешности ,

Моя неудачная попытка получить этот результат включала обновление страницы ENTIRE при закрытии всплывающего окна jQuery. Этот ЧАСТИЧНО имеет желаемый результат, но когда страница обновляется, большинство браузеров получают всплывающее окно с вопросом, хочет ли пользователь повторно отправить содержимое формы. Мне нужно избегать этого.

Это была моя обработка закрытие .vote-формы код:

$('.vote-form-close').click(function(event) { 
    event.stopPropagation(); 
    $(".vote-form").fadeOut("normal"); 
    $("#the-lights").fadeTo("slow",0); 
    $("#the-lights").css({'display' : 'none'}); 
    window.location.reload(); 
}); 

я подозреваю, что его можно обновить ТОЛЬКО DIV, а не всю страницу, но я не знаю, как выполнить Это.

Может кто-нибудь мне помочь?

EDIT: На основании одного из приведенных ниже ответов я изменил свой код. Я также хотел показать код, используемый, чтобы открыть форму слишком:

$('.vote').click(function() { 
    $(this).parent().find(".vote-form").fadeIn("normal"); 
    $("#the-lights").css({'display' : 'block'}); 
    $("#the-lights").fadeTo("slow",0.7); 
}); 
$('.vote-form-close').click(function(event) { 
    event.stopPropagation(); 
    $(".vote-form").fadeOut("normal"); 
    $("#the-lights").fadeTo("slow",0); 
    $("#the-lights").css({'display' : 'none'}); 
    $(".vote-form").load(window.location.href + " .vote-form-container"); 
}); 

Вот это проблема - у меня есть 3 формы на этой странице. Когда загружается «файл-форма-контейнер», его загрузка всех трех форм в поле .vote-form - как мне изменить код, чтобы загружать только контейнер .vote-form, который является частью конкретной .vote-формы - Я подозреваю, что я должен использовать $ (это), но я попытался изменить код для этого, и это не работало:

$(".vote-form")(this).load(window.location.href + " .vote-form-container"); 

Я имею в виду, я сделал это неправильно.

EDIT 2: Теперь "Закрыть" кнопка dosen't работы после перезагрузки формы в первый раз:

$('.vote').click(function() { 
    $(this).parent().find(".vote-form").fadeIn("normal"); 
    $("#the-lights").css({'display' : 'block'}); 
    $("#the-lights").fadeTo("slow",0.7); 
}); 
$('.vote-form-close').click(function(event) { 
    event.stopPropagation(); 
    $(".vote-form").fadeOut("normal"); 
    $("#the-lights").fadeTo("slow",0); 
    $("#the-lights").css({'display' : 'none'}); 
    var current_form = $(this).closest('.vote-form'), 
    index = $('.vote-form').index(current_form) 
    current_form.load(window.location.href + " .vote-form-container:eq(" + index + ")"); 
}); 

ответ

1

Не перезагружать страницу, но перенаправлять пользователя:

window.location.href = window.location.href.toString() 

Или загрузить новую форму с помощью AJAX:

$(".vote-form").load(window.location.href + " .vote-form"); 

Для получения дополнительной информации о АЯКС подходе см api.jquery.com/load/#loading-page-fragments


Update:

Использование JQuery функция index вы можете заменить только текущую форму.

// I asume your button is in the form 
var current_form = $(this).closest('.vote-form'), 
    index = $('.vote-form').index(current_form) 

current_form.load(window.location.href + " .vote-form:eq(" + index + ")"); 
+0

этот код помогает, однако, что, если у меня есть несколько экземпляров формы на странице? см. мое редактирование моего исходного сообщения –

+0

, можно ли дать им уникальный идентификатор типа 'vote-form-1' – jantimon

+0

его возможно, я полагаю, но можно ли использовать $ this, чтобы выбрать правильный экземпляр? Я расширил свой пост выше, пожалуйста, посмотрите –

0

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

Так что, если я хорошо понял:

$('.vote-form-close').click(function(event) { 
    event.stopPropagation(); 
    var vf = $(".vote-form"); 

    /* fadeout and remove inner content of the popup */ 
    vf.fadeOut("normal", function() { vf.empty(); }); 

    /* reset the form */ 
    document.getElementById('form').reset(); 
    ... 
}); 
Смежные вопросы