Возможно добавить свою валидацию поля, которая будет выполняться на
стороне клиента. Например, можно проверить возраст участника:
$this ->addField( array ( 'name' => 'birth_date' , 'type' => 'date' , 'validate' => array ( 'custom' , 'filled' )));
|
Кастомный валидатор будет работать ТОЛЬКО если помимо
валидатора 'custom' указан валидатор 'filled' (для типа 'select'
валидатор 'filled' добавляется автоматически). Существуют два способа для осуществления проверки.
Первый способ: Валидация
осуществляется в общем потоке листенера (listener), и создается сразу
для всех полей. Если вы хотите проверить какое-либо конкретное поле,
необходимо в блоке if проверять его по названию (oField.name) или ID
(oField.id). В
этом случае при проверке поля будет посылаться сообщение
«ON_FORM_FIELD_VALIDATE», которое можно перехватить и проверить на
правильность. В случае, если проверка не прошла, достаточно установить
флаг error массива параметров в 'true'. Например: можно в плагин в файл templates/form.adm.js добавить код:
AMI.Message.addListener(
'ON_FORM_FIELD_VALIDATE' ,
function (oParameters){
if (oParameters.oField.value. substr (-4)>1995){
alert(AMI.Template.Locale.get( 'form_validate_birth_too_young' ));
oParameters.error = true;
return (false);
}
return true;
}
);
|
А в файл templates/client.lng:
%%form_validate_birth_too_young%en%%
User too young!
%%form_validate_birth_too_young%ru%%
Пользователь слишком молод!
|
И дата рождения пользователя будет проверяться, и в случае неудачи отобразится соответствующее сообщение.
Второй способ (начиная с версии 6.0.2): Назначить обработчик на каждое поле. В этом случае название сообщение будет выглядеть как «ON_FORM_FIELD_VALIDATE_BIRTH_DATE». В коде templates/form.adm.js необходимо в таком случае добавить следующую запись:
AMI.Message.addListener(
'ON_FORM_FIELD_VALIDATE_BIRTH_DATE' ,
function (oParameters){
if (oParameters.oField.value. substr (-4)>1995){
alert(AMI.Template.Locale.get( 'form_validate_birth_too_young' ));
oParameters.error = true;
return (false);
}
return true;
}
);
|
Языковой файл подключается так же, как и в первом варианте.
|