Отправка большой формы без заморочек

в 5:04, , рубрики: Песочница, метки: , , ,

Добрый день, дорогие друзья!
Может эта тема и поднималась уже, но я мысленно искал это решение несколько лет, и, буквально этой ночью, меня осенило.

Стояла задача отправить клиенту заполненную анкету на сайте. Задача травиальная, но было две проблемы:
1) Количество заполняемых полей больше пятидесяти
2) Сама анкета на бассурманком языке

Первой мыслью было стандартное присвоение каждому полю уникального названия, после чего копипаст формы в шаблол письма с заменой полей на переменные вида $_POST['value_name']

Но, там же еще и чекбоксы с радио-инпутами… Их тоже как-то надо проверять… Кароче, че-то мне эта затея не понравилась и написал простой, но полезный скриптик, который может кому-то пригодится:

function sendForm()
{
$("input[type=text]").each(function(){
   $(this).replaceWith('<span style="color:green;">'+$(this).val()+'</span>');
});
$("textarea").each(function(){
   $(this).replaceWith('<span style="color:green;">'+$(this).val()+'</span>');
});
$("input[type=checkbox]:checked").each(function(){
   $(this).replaceWith('<span style="color:green; font-weight:700;">X</span>');
});
$("input[type=radio]:checked").each(function(){
   $(this).replaceWith('<span style="color:green; font-weight:700;">X</span>');
});
return $('form').html(); 
}

Если кому-то не нравится буква «Х» то можно заменить ее на ✔, но не проверял как оно работает.
Смысл скриптика, думаю, понятен — заменяем все введенные данные на значения, а потом возвращаем ВСЮ форму. Что дальше с ней делать уже зависит от конкретной задачи — отправлять письмом или заносить в базу, но таким образом можно сэкономить кучу времени. Буду рад, если кому-то пригодится мое решение.

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js