Я знаю, что это старый вопрос, но я наткнулся на него, когда у меня возникла похожая проблема, и просто хотел поделиться тем, как я закончил добиваться результатов, которые вы запрашивали, чтобы будущие люди могли выбрать, что лучше всего подходит для их ситуации.
Во-первых, я использую в форме событие onsubmit
и передаю this
функции, чтобы упростить работу с этой конкретной формой.
<form action="/system/wpacert" onsubmit="return closeSelf(this);" method="post" enctype="multipart/form-data" name="certform">
<div>Certificate 1: <input type="file" name="cert1"/></div>
<div>Certificate 2: <input type="file" name="cert2"/></div>
<div>Certificate 3: <input type="file" name="cert3"/></div>
<div><input type="submit" value="Upload"/></div>
</form>
В нашей функции мы отправим данные формы, а затем закроем окно. Это позволит ему отправлять данные, и как только это будет сделано, оно закроет окно и вернет вас в исходное окно.
<script type="text/javascript">
function closeSelf (f) {
f.submit();
window.close();
}
</script>
Надеюсь, это кому-нибудь поможет. Наслаждайтесь!
Вариант 2. Эта опция позволит вам отправлять через AJAX, и, если она будет успешной, она закроет окно. Это предотвращает закрытие окон перед отправкой данных. Кредит http://jquery.malsup.com/form/ за работу над плагином jQuery Form
Сначала удалите события onsubmit / onclick из кнопки формы / отправки. Поместите идентификатор в форму, чтобы AJAX мог его найти.
<form action="/system/wpacert" method="post" enctype="multipart/form-data" id="certform">
<div>Certificate 1: <input type="file" name="cert1"/></div>
<div>Certificate 2: <input type="file" name="cert2"/></div>
<div>Certificate 3: <input type="file" name="cert3"/></div>
<div><input type="submit" value="Upload"/></div>
</form>
Во-вторых, вы захотите бросить этот скрипт внизу, не забудьте сослаться на плагин. Если отправка формы прошла успешно, окно закроется.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script>
$(document).ready(function () {
$('#certform').ajaxForm(function () {
window.close();
});
});
</script>