Здравствуйте.
Есть страница с формой. Форма должна заполняться автоматически из файла, в котором содержатся все данные для этой формы. После заполнения форма должна отправляться. Я сделал отправку по таймауту.
fetch('/orders/'+filename+'.txt').then(response => response.text()).then((data) => {
var info, vars = ['familiya', 'imya', 'otchestvo', 'tel', 'email', 'city', 'course_info', 'price', 'pre_order', 'time']; // создаём массив с именами импутов
info = data.split(';'); // создаём массив со значениями, которые берём из текстового документа
for (var i = 0; i<vars.length; i++) { // перебираем массив и заполняем инпуты
$('.send_page').find('input[name='+vars[i]+']').attr('value', info[i]);
}
});
// отправляем форму спустя 1000мс, чтобы инпуты успели заполниться
setTimeout(function(){$("#send_page").submit()},1000);
Но это решение оказалось не самой удачной идеей, т.к. иногда приходят пустые письма, - видимо скрипт не успевает сработать и всё заполнить. Гадать дальше и подбирать задержку больше, мне кажется неправильным. Подумал, что лучше сделать проверку на заполненность полей и только при их заполнении отправлять письмо. НО! Есть нюанс. Я не до конца уверен, что письма приходят пустые именно из-за того, что не успевает сработать скрипт. На это могут быть и другие причины. И в моём случае лучше уж получить пустое письмо, чем не получить никакого.
Отсюда появилась мысль сделать отправку письма при выполнении одного из нескольких условий: либо при заполнении одного из нескольких полей (например tel); либо по прошествии скажем 10 секунд (вне зависимости от заполненности полей). Вот собственно в этом и вопрос, как такое условие составить, я что-то не соображаю уже.