для проектов с jQuery 1.7 и новее
С определенного момента сниппет ajaxSubmit не работает - он формирует нерабочий скрипт. Здесь простой рецепт обновления этого сниппета.
Корень всех проблем в том, что начиная с jQuery 1.7 функции bind()
и live()
устарели, а именно на этих функциях завязана работа скрипта, который формируется сниппетом ajaxSubmit
. Актуальной заменой этих функций являются on()
и off()
.
Чтобы "отремонтировать" сниппет, нужно внести изменения в файл /assets/plugins/ajax_submit/ajax_submit.inc.php
.
Было
.unbind('submit')
.live('submit',function(){
Нужно
.off('submit')
.on('submit',function(){
Было
jQuery(document).bind('ready',{$id}as_setAction);
Нужно
$(document).ready(function(){
{$id}as_setAction();
});
После строки 55 вставим строчку:
{$id}as_setAction();
Это нужно для того, чтобы форма после замены снова обрабатывалась скриптом.
Ну и еще все слова jQuery
в строках 38-65 заменить на знак $
.
Очень часто требуется отследить, сколько юзеров воспользовались формой и отправили свои данные. Рассмотрим решение этой задачи для Яндекс.Метрики.
Вернемся в файл /assets/plugins/ajax_submit/ajax_submit.inc.php
и вставим после строки 54 новую строчку, вот эту:
if(typeof({$id}as_updateCallback)=='function') {$id}as_updateCallback();
Что получим после этой манипуляции? После обновления данных в контейнере будет вызываться функция {$id}as_updateCallback()
, если ее определить где-нибудь еще. В этой функции можно проверить какие-нибудь дополнительные условия и отправить в Метрику событие. Вот простой пример. Допустим, у нас вызван сниппет ajaxSubmit
с &id=`feedback`
. Тогда где-нибудь на странице (разумеется, ниже подключения jQuery) можно объявить функцию feedbackas_updateCallback()
.
<script>
function feedbackas_updateCallback(){
yaCounterXXXXXXXX.reachGoal('event_name');
return true;
}
</script>