JavaScript: закрытие окна по нажатию кнопки - PullRequest
1 голос
/ 26 апреля 2011

Мне нужно закрыть окно по нажатию кнопки, используя javascript.

Однако, прежде чем закрыть окно, я хочу отправить форму (я использую struts2. Это веб-приложение java).

Итак, как мне отправить данные для сохранения и закрыть окно одновременно.Это всплывающее окно.Ниже приведен код jquery, который я использую для отправки формы.

   function fnSubmit() {                
         $('#adminpopup').attr('action','submitPopupAction').submit();  
}   

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

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

Ответы [ 5 ]

5 голосов
/ 26 апреля 2011

Отправьте форму на сервер.

Если это тот же домен, вернуть

<script>
window.close()
</script>

с сервера

2 голосов
/ 26 апреля 2011

Вы можете использовать функцию JavaScript self.close () (или window.close () для других окон), но она покажет сообщение безопасности, если окно не было открыто с помощью window.open (). Вы сможете позвонить после отправки формы.

Использование window.close

1 голос
/ 26 апреля 2011

Просто отправьте форму и (при успехе) отправьте обратно страницу, которая просто выдает window.close.Это будет работать только в том случае, если окно было открыто с использованием window.open, поэтому в качестве альтернативного варианта вы должны предоставить в окне удобочитаемое сообщение, которое говорит, что они могут безопасно закрыть всплывающее окно.

0 голосов
/ 26 апреля 2011

Попробуйте следующее:

Создайте кнопку и добавьте туда событие onClick. Закройте это окно. Дополнительно подключите событие * un * load к тегу body. На это событие отправьте форму.

0 голосов
/ 26 апреля 2011

Просто добавьте это после строки submit:

window.setTimeout(function() {
   window.close();
}, 1000);

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

...