Друзья, вроде обычное дело, но вот застрял, весь день копаюсь и не пойму как это сделать.
Есть скрипт отправки форм с сайта AJAXом, все просто и работает ЕСЛИ форма с id уже существовала при загрузке страницы.
НО если id добавить динамически по событию CLICK например по кнопке, то получается такой формы для AJAX скрипта не существует, и мол надо как то перезагрузить DOM дерево? Или что вообще нужно?
Вот пример как работает (код упростил, оставил суть):
Форма:
<form id="form1" class="form">
<input type="text" value="" placeholder="Введите ваше имя:">
<input type="tel" value="" placeholder="Введите ваш телефон:">
<a href="#" data-type="submit">ОТПРАВИТЬ ЗАЯВКУ</a>
</form>
Отправляю:
$(window).load(function () {
$('#form1').forms({
ownerEmail: 'example@mail.ru',
product: 'Заявка с сайта'
})
Подключаемый внизу страницы js файл с логикой
$.ajax({
type: "POST",
url: '/MailHandler.php',
data: {
name: _.getValFromLabel($('.name', _.form)),
phone: _.getValFromLabel($('.phone', _.form)),
pro_duct: _.product,
owner_email:_.ownerEmail,
stripHTML: _.stripHTML
}
})
/*-------------------------------------------------------------*/
НО ЕСЛИ id формы генерить ПОСЛЕ загрузки страницы по событию CLICK, то форма не отправляется :(
<a href="#" data-id="['динамический id']" class="btn">услуга</a>
$('.btn').on('click', function () {
var dataidx = $(this).attr('data-id');
$('form').attr('id','form'+dataidx);
});
Форма:
<form id="form['динамический id']" class="form">
<input type="text" value="" placeholder="Введите ваше имя:">
<input type="tel" value="" placeholder="Введите ваш телефон:">
<a href="#" data-type="submit">ОТПРАВИТЬ ЗАЯВКУ</a>
</form>
Отправляю:
$(window).load(function () {
$('#form['динамический id']').forms({
ownerEmail: 'example@mail.ru',
product: 'Заявка с сайта'
})
Как быть в таком случае? Как поступают при таких раскладах?
Очень не хочется для каждой услуги распечатывать свою форму сразу, хочется менять динамически одну форму подставляя id услуги.