Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как удалить событие успешной отпраки формы после закрытия модального окна? (https://javascript.ru/forum/misc/77738-kak-udalit-sobytie-uspeshnojj-otpraki-formy-posle-zakrytiya-modalnogo-okna.html)

ozoro 13.06.2019 19:09

как удалить событие успешной отпраки формы после закрытия модального окна?
 
После успешной отпраки формы в два этапа (изначально предварительные поля заголовок и текст, после нажатия далее, модальное окно с полями Имя и Email) на втором этапе отправляю форму... после успешной отправки поля формы 2-го этапа удаляю и выдаю сообщение об успешной отправке:

........,

success: function (response) {
                    $(document).trigger('tickets_ticket_save', response);
                    $('#ticketForm.create').sisyphus().manuallyReleaseData();

                    if (response.success) {
                        if (response.message) {
                            Tickets.Message.success(response.message);
                        }
                        if (action == 'ticket/save') {
							
                            $(form).find('input[type="submit"], input[type="button"]').removeAttr('disabled');
                            if (response.data['content']) {
                                $('#ticket-editor').val(response.data['content']);
                            }
                            $('#ticket-files-list').find('.deleted').each(function() {
                                $(this).remove();
                            })
                        }
						// так вот сделал
						$(form).hide();
						$('input').val('');	
						$('textarea').val('');												
						$(".modal-title").html('<b style="display:block;text-align:center;">Вопрос успешно отправлен!</b>');
						$(".modal-body").html('<div class="clr berrors">После ответа на Ваш вопрос Вы получите сообщение на свой Email</div>');
						
						
							$(".modal").on("hidden.bs.modal", function () {
								location.reload();//перезагружаем страницу после закрытия модального окна
							});						
						// END так вот сделал

                    }
,.....



Не нашел ничего лучше чем перезагружать страницу после закрытия модального окна с сообщением об успешной отправке для полного обнуления формы (чтобы форма вернулась в первоначальный вид), но хотелось бы обнулить форму и удалить событие об успешной отправке без перезагрузки страницы... а то получается, если не перезагружать страницу, а просто делать $('поле формы').val(''); то после нажатия на кнопку перехода во второй этап вместо полей Имя и Email) выдает сразу сообщение об успешной отправки формы.

laimas 13.06.2019 19:52

Метод .reset() формы.

А $(form).find('input[type="submit"], input[type="button"]').removeAttr('disabled');, это $(form).find('input[type="submit"], input[type="button"]').prop('disabled', true/false);

ozoro 14.06.2019 20:10

laimas,
ничего не понял из этого ответа.
При чем тут
А $(form).find('input[type="submit"], input[type="button"]').removeAttr('disabled');, это $(form).find('input[type="submit"], input[type="button"]').prop('disabled', true/false);
это же делает неактивность кнопки...

Метод .reset() формы не срабатывает, выдавал ошибку
если указать так:
$(".modal").on("hidden.bs.modal", function () {
								
$(".modal-title").html('Оставьте свои контактные данные');
$("div.berrors").detach();
$(form).show();
$(form)[0].reset();

});


TypeError: $(...)[0] is undefined
и форма не восстанавливается, то есть .show(); не срабатывает и reset() undefined

если указать так:
$(".modal").on("hidden.bs.modal", function () {
								
$(".modal-title").html('Оставьте свои контактные данные');
$("div.berrors").detach();
$(form).show();
$(form).reset();

});


TypeError: $(...).reset is not a function

рони 14.06.2019 21:05

Цитата:

Сообщение от ozoro
$(form).show();

добавьте кавычки или укажите иной селектор нужной формы.

ozoro 15.06.2019 12:42

рони,
........,

success: function (response) {
                    $(document).trigger('tickets_ticket_save', response);
                    $('#ticketForm.create').sisyphus().manuallyReleaseData();

                    if (response.success) {
                        if (response.message) {
                            Tickets.Message.success(response.message);
                        }
                        if (action == 'ticket/save') {
							
                            $(form).find('input[type="submit"], input[type="button"]').removeAttr('disabled');
                            if (response.data['content']) {
                                $('#ticket-editor').val(response.data['content']);
                            }
                            $('#ticket-files-list').find('.deleted').each(function() {
                                $(this).remove();
                            })
                        }
				// так вот сделал
				$(form).hide(); //скрываем форму
				$('input').val('');	
				$('textarea').val('');												
				$(".modal-title").html('<b style="display:block;text-align:center;">Вопрос успешно отправлен!</b>');
				$(".modal-body").html('<div class="clr berrors">После ответа на Ваш вопрос Вы получите сообщение на свой Email</div>');
						
						
					$(".modal").on("hidden.bs.modal", function () {
						//location.reload();//перезагружаем страницу после закрытия модального окна
						
                        $('.modal-title').html('Оставьте свои контактные данные');
						$('.berrors').html('');
						$('div.berrors').detach();
								
						$('#ticketForm').show().reset(); // показываем и очищаем форму, НО ЭТО ПОЧЕМУ-ТО НЕ РАБОТАЕТ, ФОРМА НЕ ПОКАЗЫВАЕТСЯ И В КОНСОЛИ ОШИБКА : "TypeError: $(...).show(...).reset is not a function"


					});						
						// END так вот сделал

                    }
,.....


Указал непосредственно селектор формы, НО ЭТО ПОЧЕМУ-ТО НЕ РАБОТАЕТ, ФОРМА НЕ ПОКАЗЫВАЕТСЯ (не восстанавливается) И В КОНСОЛИ ОШИБКА : "TypeError: $(...).show(...).reset is not a function"


Если сделать так:
$('#ticketForm').show();
$('#ticketForm').reset();


То форма также не восстанавливается и в консоли ошибка: "TypeError: $(...).reset is not a function"


А если указать так:
$('#ticketForm').show();
$('#ticketForm')[0].reset();


То в консоли: "TypeError: $(...)[0] is undefined"

laimas 16.06.2019 05:09

Цитата:

Сообщение от ozoro
При чем тут

При том, что это свойство, также как и checked, и атрибута соответствующего может и не быть, это просто JQ добавляет удаляет атрибут элементу. И оперировать свойствами в JQ нужно методом prop().

А если "TypeError: $(...)[0] is undefined", значит нет объекта.


Часовой пояс GMT +3, время: 14:00.