@wismel

Какая ошибка допущена при указании JS события и функции на сайте?

На сайте есть форма отправки данных для обратной связи. Хочу настроить JS событие через onclick для яндекс метрики.
Первоначально выглядело вот так
<input name="adds" type="image" src="/i/shortorder_send.png" onClick="sendAnketa(10)">

Я меняю таким образом
<input name="adds" type="image" src="/i/shortorder_send.png" onClick="sendformforyandex();">


К вот этим функциям
function sendAnketa(num, num2){
		var check = false;
		if (num=="6" && num2=="_1") check = checkmailAndTel($('#a18_1').val(), $('#a19_1').val());
		if (num=="6" && !num2)  check = checkmailAndTel($('#a18').val(), $('#a19').val());
		if (num=="11" && !num2) check = checktext($('#a36').val(),'Имя') && checkmailAndTel($('#a37').val(), $('#a38').val()) && checktext($('#a39').val(),'Интересует');
		if (num=="9" && !num2)  check = checktext($('#a25').val(),'Тема') && checktext($('#a26').val(),'Текст');
		if (num=="7" && !num2)  check = checktext($('#a29').val(),'Ваше имя') && checkmailOrTel($('#a30').val()) && checktext($('#a32').val(),'Подробное описание');
		if (num=="5" && !num2)  check = checktext($('#a12').val(),'Имя') && checkmailOrTel($('#a13').val()) && checktext($('#a14').val(),'Текст сообщения');
		if (num=="4" && !num2)  check = checktel($('#a11').val());
		if (num=="10" && !num2) check = checktext($('#a33').val(),'Имя') && checktel($('#a34').val()) && checktext($('#a35').val(),'Интересует');
		
		
		if(!check) return false;
		var action="/kontaktnyy_blok/send"+num+".htm";
		var datas = $( "#ankform"+num+(num2?num2:"") ).serialize();

		$.ajax({
			type: "POST",
			url: action,
			data: datas,
			success: function(msg){
				$('#orderbanner_form').hide();
				$('#shadowdiv').show();
				$('#sendank_form').show().center();
				$('#sendank_text').html(msg);
			}
		});
	}


Дописываю внизу две такие
function yandex() {
	yaCounter7613629.reachGoal('leftpanel'); 
	return true;
	}
	
	function sendformforyandex() {
	sendAnketa(num, num2);
	yandex();
	}


Но не работает ни отправка контактных данных на почту, ни в метрику инфы о клике.

Буду очень признателен, если кто-нибудь сможет подсказать, где ошибка.
P.s. В JS ни бум бум, делал по инструкции, до этого получалось, а с этим кодом возникла проблема.
Сайт rekmedia.ru панель обратной связи слева
  • Вопрос задан
  • 187 просмотров
Решения вопроса 1
@abberati
frontend-разработчик
при клике на кнопку вызывается функция sendformforyandex, которая, в свою очередь, вызывает sendAnketa(num, num2), где num и num2 не определены (равны undefined). в ходе ужасающей и монструозной проверки внутри sendAnketa оказывается, что ни один из if не срабатывает, check остаётся равным false, выполнение функции прерывается на вот этой строке:
if(!check) return false;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
4mobile
@4mobile
WEB developer
функция должна вызываться с параметрами sendAnketa(num, num2)
а здесь с какими параметрами она вызывается?
function sendformforyandex() {
sendAnketa(num, num2);
yandex();
}

поэтому срабатывает if(!check) return false;

при первом вызове нужно смотреть что возвращается тут
if (num=="10" && !num2) check = checktext($('#a33').val().....

console.log вам в помощь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы