[AjaxForm] Версия 1.1.0-pl Улучшенная регистрация js
Представляю вам новую версию компонента AjaxForm, который позволяет отправлять любые формы через Ajax.
Внимание, эта версия содержит изменения, которые могут поломать работу сторонних дополнений, использующих AjaxForm. Обязательно проверяйте работу форм после обновления.
AjaxForm очень универсальный, благодаря чему некоторые разработчики используют его в своих дополнениях, но у него есть 2 неприятные особенности:
Так что, встречайте версию 1.1.0-pl, которая добавляет 2 новых параметра для разработчиков:
То есть, теперь можно написать несколько вариантов объекта AjaxForm, положить в разные файлы javascript и вызывать вот так:
2 разных вызова AjaxForm на странице, с разными настройками и параметрами никак не мешают друг другу работать:

Как вы видите, в javascript больше нет глобального объекта afConfig, общего для всех скриптов. Его заменяет локальная переменная с конфигом, которую каждый экземпляр AjaxForm может использовать на свой лад.
Так что, я советую всем авторам, которые используют AjaxForm в своих дополнениях обновить их с учетом новых возможностей как можно скорее.
И я вам очень прошу, не включайте больше в свои собственные скрипты обрезанный объект AjaxForm, который перезаписывает стандартный.
Все изменения на GitHub.
Внимание, эта версия содержит изменения, которые могут поломать работу сторонних дополнений, использующих AjaxForm. Обязательно проверяйте работу форм после обновления.
AjaxForm очень универсальный, благодаря чему некоторые разработчики используют его в своих дополнениях, но у него есть 2 неприятные особенности:
- Он инициализируется один раз для контекста
- Соотвественно, он может подключить только один файл javascript
Так что, встречайте версию 1.1.0-pl, которая добавляет 2 новых параметра для разработчиков:
- &formSelector — Имя CSS класса, который будет использован как jQuery селектор для инициализации формы. По умолчанию «ajax_form».
- &objectName — Имя объекта для инициализации в подключаемом javascript. По умолчанию «AjaxForm».
То есть, теперь можно написать несколько вариантов объекта AjaxForm, положить в разные файлы javascript и вызывать вот так:
[[!AjaxForm]]
[[!AjaxForm?
&formSelector=`favorites-form`
&forntend_js=`/assets/.../favorites.js`
&objectName=`AjaxFavoritesForm`
]]Первый вызов подключить стандартный AjaxForm с родными скриптами, и запустит его родной объект. А второй вызов загрузит полностью кастомизированный скрипт и запустит уже его объект.2 разных вызова AjaxForm на странице, с разными настройками и параметрами никак не мешают друг другу работать:

Как вы видите, в javascript больше нет глобального объекта afConfig, общего для всех скриптов. Его заменяет локальная переменная с конфигом, которую каждый экземпляр AjaxForm может использовать на свой лад.
Так что, я советую всем авторам, которые используют AjaxForm в своих дополнениях обновить их с учетом новых возможностей как можно скорее.
И я вам очень прошу, не включайте больше в свои собственные скрипты обрезанный объект AjaxForm, который перезаписывает стандартный.
Все изменения на GitHub.
Комментарии: 27
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Теперь после отправки формы страница просто обновляется, т.е. successMessage не выводится, но сама форма работает норм. Я что-то новое забыл дописать?
Ну и проверь ошибки в консоли браузера.
первым делом глянул)
Как можно обезопасить?
Все параметры jGrowl можно посмотреть здесь
После отправки полям добавляется класс error.
К примеру у меня error с красным бекграундом, т.е как бы те поля которые не прошли валидацию будут с красными беком.
Все как бы ок.
Но если ввести повторно все правильно и поле проходит валидацию error не удаляется. И соответственно поле остается с красным бекграундом.
В default.js надо что то дописать?
Хочется сделать выделение неправильных полей, но чет не пойму
Обычная форма работает, а вот добавляю select, то письма не отправляются, и зеленое окошко бьет «сообщение успешно отправлено», но когда удаляю весь select, то письма приходят.
Поясните, в чем дело, заранее искренне благодарю.
Теперь интересует вопрос.
У меня несколько разных вызовов AF на 1 странице, они все похожи меняется лиш tpl'ки и валидация
Страница загрузилась, ничего не делая стразу заполняю форму по валидации, оправляю, ошибок не выдает, но пишет, что форма успешно отправлена, а ведь должен &successMessage=`Сообщение отправлено!` и не приходит письмо. Ничего не делая, пробую ту же форму еще раз, теперь все как надо и письмо приходит.
Далее ничего опять не делая, иду к другой форме там все так же и другие формы так же.
modx 2.3.2
jquery-1.11.1.min.js(все сторонние скрипты пробовал убирать так же)
AF и FormIt последний
кеш браузера чистил(default.js)
консоль браузера чиста
некеш AF пробовал
пробовал 1 вызов на странице так же
дошло до того, что w3c валидацию прошел(а вдруг!:)
по поводу селектов и чеков тоже интересно
пробовал так(т.к. AF обертка):
rtfm.modx.com/extras/revo/formit/formit.tutorials-and-examples/formit.examples.simple-contact-page
всегда приходит нет
проблема была в одно поле input
Стоял атрибут disabled у поля, т.е. при отправке AF считал, что у него состояние disabled(которое насколько я помню использует AF перед отправкой), но после того как нажимаешь на кнопку у него этот атрибут исчезает(вроде видел в js, что AF его удаляет). phone1 у меня был обязательным.
вот такой несуразный момент огорчил меня вчера до этого момента.
ошибка это или нет, я не знаю, решил просто удалить этот атрибут и все заработало.
value=«нет» не катит)
Ато вместо этого приходит плейсхолдер
Через модификатор, в чанке письма
Хочу сделать сниппет в котором вызывается pdoResources и ему передается limit. Т.е. на странице пару ресурсов загрузилось сразу, снизу кнопка показать еще, нажав на нее подгружаются еще ресурсы к примеру еще 3, нажав еще раз а ресурсов больше нет выдать «Больше нет»
«Простая» подгрузка ресурсов через аякс, хочется сделать через AF и по феншую так сказать, надо все таки кодить правильно и грамотно.
Я правильно думаю и реально такое? если есть пример такого буду очень благодарен! наводки тоже будет здорово!
А это так и должно быть, что при каждой отправке формы в form добавляются безымянные input[hidden]
т.е. 10 раз нажал на отправить, 10 создалось.
на 2-х сайтах смотрел, тоже так же.