У меня есть скрипт который читает сайт на наличие div с определенным классом, в этот див подгружает форму, далее при заполнении формы слушаем событие click по классу и отправляем форму.
Проблема! Когда форм 2 на сайте, то получается что скрипт отправляет сразу две заявки вместо одной, хотя форма заполнена одна! Как поправить?
Код
// Находим все элементы куда встроить формы
var EmbedForms = document.getElementsByClassName('EmbedForm');
for( var i = 0; i < EmbedForms.length; i++ ) {
var Embed_Forms = EmbedForms[i];
// Отправляем все данные в функцию загрузки и добавления форм
EmbedFormAdd(EmbedForms[i].getAttribute('data-key-form'));
function EmbedFormAdd(a){
var url = ''+HOST+'/formfromsite/embedform/'+ a;
var XHR = ("onreadystatechange" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
var xhr = new XHR();
xhr.open('GET', url, true);
xhr.onload = function() {
FormOptions = JSON.parse(this.responseText);
if (FormOptions.succes == 1){
// Вставляем формы в div с подходящими ID
document.getElementById(''+a+'').innerHTML = FormOptions.formhtml;
// хаходим элементы с классом .send-bottom
var divs = document.querySelectorAll(".send-bottom");
// слушаем событие click по классу .send-bottom
[].forEach.call(divs, function(div) {
div.addEventListener("click", function() {
key_form = div.getAttribute('data-key-form');
id_form_key = div.getAttribute('data-id-form-key');
encoding_form = div.getAttribute('data-encoding-form');
api_key = div.getAttribute('data-api-key');
check_email = div.getAttribute('data-check-email');
ya_metrik_id = div.getAttribute('data-ya-metrik-id') || 0;
ya_metrik_goals = div.getAttribute('data-ya-metrik-goals') || "";
var form_block = document.getElementById('form_' +key_form+ '');
var contact_name = document.getElementById('contact_name_' +key_form+ '');
var contact_phone = document.getElementById('contact_phone_' +key_form+ '');
var text_after_send_form = document.getElementById('text_after_send_form_' +key_form+ '');
if(check_email == 1) {
var contact_email = encodeURIComponent(document.getElementById('contact_email_' +key_form+ '').value);
}
// отправляем данные полученные из полей
if(contact_name.value.length >= 2){
if(contact_phone.value.length >= 7){
sendFunction(HOST +'?api_key='+ api_key +'&name=' + encodeURIComponent(contact_name.value) + '&phone=' + encodeURIComponent(contact_phone.value) + '&email=' + contact_email + '&idform='+ id_form_key +'&encoding='+ encoding_form_ucrm +'&add_vid=form_embed&hash_person=' + hash_person + '&project_site=' + project_site + '&page_site_project=' + page_site_project + '&page_site_project=' + page_site_project);
form_block.style.display = "none";
text_after_send.style.display = "block";
if (ya_metrik_id !== '0') {
if (ya_metrik_id !== '') {
window['yaCounter'+ ya_metrik_id].reachGoal(ya_metrik_goals);
}
}
// ждем немного, до закрытия окна.
setTimeout(function(){
form_block.style.display = "block";
text_after_send_form.style.display = "none";
}, 8000);
} else {contact_phone.className +=" input-fb-error"; contact_phone.onclick = function(){contact_phone.className = contact_phone.className.replace( /(?:^|\s)input-fb-error(?!\S)/ , '' );};}
} else {contact_name.className +=" input-fb-error"; contact_name.onclick = function(){contact_name.className = contact_name.className.replace( /(?:^|\s)input-fb-error(?!\S)/ , '' );};}
});
});
}
}
xhr.onerror = function() {
// alert( 'Ошибка ' + this.status );
//console.log( 'Ошибка ' + this.status);
}
xhr.send();
}
}
Есть выпадающий список (select) и текстовое поле (input) в одной форме. При выборе элемента из select я получаю его значение.
Здравствуйте ребята. Помогите пожалуйста понять в чем проблема.