Как сделать скачивание файла, после отправки обратной формы
нужно сделать с конкретной формы (т.к. их несколько), чтобы перед скачиванием данные проверялись на заполнение и никак не скачивалось без.
<div class="pop modal_download " id="download" >
<div class="modal__close modal__close_download">×</div>
<div class="modal__title">Документация</div>
<div class="modal__subtitle">Для того что бы скачать документацию, заполните форму</div>
<form class="modal-feed-form ice-cream" action="download/Panorama_Sochi_4.pdf" id="download_form">
<!-- Hidden Required Fields -->
<input type="hidden" name="project_name" value="Townhouse">
<input type="hidden" name="admin_email" value="[email protected]">
<input type="hidden" name="form_subject" value="download">
<!-- END Hidden Required Fields -->
<input id="name" class="modal-form__input contackt-form__input_name " name="name" type="text" required placeholder="Имя">
<input name="phone" id="phone" class="modal-form__input contackt-form__input_phone " required placeholder="Телефон">
<input class="modal-form_button modal-form_button_down result" id="input_form" type="submit" value="Скачать документацию">
</form>
</div>
Код ajax
$(document).ready(()=>{
// E-mail Ajax Send
$('form').submit(function(){ // Change
const th = $(this);
$.ajax({
type: 'POST',
url: 'mail.php', // Change
data: th.serialize()
}).done(function(){
$(this).find('input').val('');
$('#consultation, #order, #download').fadeOut();
$('.overlay, #thanks').fadeIn('slow');
$('form').trigger('reset');
});
return false;
});
});
Форму обратной связи отправляет, а файл не скачивает
Ответы (1 шт):
Автор решения: RomanMitasov
→ Ссылка
Чтобы сразу после успешного отправления формы у пользователя началось скачивание файла, добавьте в done() вот такой код:
.done(function() {
// ...
if (true /* условие, что форма отправлена верно */) {
var link = document.createElement('a');
// '/download.png' это URL скачиваемого файла
link.setAttribute('href', '/download.png');
link.setAttribute('download', 'download.png');
link.click();
}
// ...
});
Решение взято отсюда