AjaxForm не срабатывает валидация Checbox

Добрый день!

Чекбокс выглядит так:
<input type=«checkbox» name=«iagree[]» id=«iagree» value=«I agree that:»
[[!+fi.iagree:FormItIsChecked=`I agree that:`]]>
Я соглашаюсь с тем что:

В вызове снипета есть необходимый параметр:
&validate=`
iagree:required`

делал и так:
&validate=`
iagree[]:required`

Есть и другие поля для валидации. Они валидируются, а чекбокс нет.
И класс не присваивается, и форма улетает без поставленной галки.
Гуглил, яндексил, да всё бестолку((

Заодно, если знатоки AjaxForm подскажут как слать два письма с разными tpl (одно мне, другое тому, кто форму заполнил, о том, что его заявка успешно ушла) — буду крайне признателен

И еще как добавить в случае ошибки валидации чекбокса рядом с ним сообщение.
У меня там рядом с ним вот такая конструкция есть:
[[+fi.error.iagree]]
и в параметрах снипета такая:
&iagree.vTextRequired=`Тык!`
только я хз сработает ли и как вобще надо

И еще мне надо что бы файлы можно было прикреплять только doc, docx и pdf — как это сделать?
Серый
27 января 2017, 18:09
modx.pro
3
5 948
0

Комментарии: 2

Илья Уткин
28 января 2017, 07:59
1
+2
<input type="hidden" name="iagree[]" value="">
<input type="checkbox" name="iagree[]" id="iagree" value="I agree that:"
[[!+fi.iagree:FormItIsChecked=`I agree that:`]]>
Дело в том, что по стандартам HTML при выключенном чекбоксе на сервер не передаётся от него ничего — даже пустого элемента нет, как будто и не было чекбокса. Поэтому нужно создать скрытое поле с таким же именем — чтобы в $_POST соответствующи элемент всё-таки был.

Для отправки второго письма гугли параметр FormItAutoResponder

Для сообщения об ошибке делай так:
<span class="error_iagree">[[+fi.error.iagree]]</span>
А про файлы вопрос сложнее, чем кажется на первый взгляд. В двух словах не расскажешь.
    Серый
    28 января 2017, 11:07
    0
    Ура! Помогло! Странно, что для FormIt не надо было так ловчиться…
    А может быть подскажете как хотя бы размер файла ограничить, например до 2 мб?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2