"Уже сегодня делай то, о чем другие будут думать завтра!"

Обработка селектов, флажков и радио

Сайдбар

Хотя FormIt может обрабатывать поля любого типа, для селектов, радио и флажков требуются специальные инструкции, в связи с их естественным значением.

 

Обработка селективных полей

FormIt предоставляет утилитный сниппет, называемый FormItIsSelected, который может использоваться в качестве Output Filter для обработки selected="selected" части опции.

Пример:

<select name="color">
   <option value="blue"
 [[!+fi.color:FormItIsSelected=`blue`]]
>Blue</option>
   <option value="red"
[[!+fi.color:FormItIsSelected=`red`]] 
>Red</option>
   <option value="green"
[[!+fi.color:FormItIsSelected=`green`]]
>Green</option>
 
   <!-- This would also work -->
   <option value="yellow"
[[!+fi.color:is=`yellow`:then=`selected`]]
>Yellow</option>
</select>

 

Таким образом будет автоматически обрабатываться «selected» часть поля опции, которая проходит валидацию и обработку ошибок.

 

Обработка флажков и радио

Обработка флажков и радио очень похожа на обработку селектов, с той лишь разницей, как Вы проводите для них валидацию «required». FormIt предоставляет помощь OutputFilter  для FormItIsChecked (похожую на FormItIsSelected) для обработки персистентности значения.

В этом примере показана обработка флажков, персистируя их значения:


<label>Color:
[[!+fi.error.color]]
</label>
<input type="checkbox" name="color[]" value="blue"
 [[!+fi.color:FormItIsChecked=`blue`]]
> Blue
<input type="checkbox" name="color[]" value="red"
[[!+fi.color:FormItIsChecked=`red`]]
> Red
<input type="checkbox" name="color[]" value="green"
[[!+fi.color:FormItIsChecked=`green`]]
> Green

 

Зпомните, что [] удаляется при установке плейсхолдера «fi.error.color».

 

Обработка Required в Checkboxes (по флажкам)

Так как HTML не отправляет значение, если флажок не установлен, обработка валидации «required» по флажкам может быть сложнее. Вам нужно будет добавить поле «hidden» перед, так что, по крайней мере, отправляется пустое значение:

[[!FormIt? &validate=`color:required`]]
...
<label>Color: [[!+fi.error.color]]</label>
<input type="hidden" name="color[]" value="" />
<input type="checkbox" name="color[]" value="blue" [[!+fi.color:FormItIsChecked=`blue`]] > Blue
<input type="checkbox" name="color[]" value="red" [[!+fi.color:FormItIsChecked=`red`]] > Red
<input type="checkbox" name="color[]" value="green" [[!+fi.color:FormItIsChecked=`green`]] > Green

 

Таким образом проводится успешная проверка, что, по крайней мере, один флажок был выбран при отправке формы.




Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

telegram: @Accusser
skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Sign In