В ZForms определено несколько специальных событий, генерируемых виджетами при наступлении соответствующих условий. Для этих событий могут быть определены функции обратного вызова («подписчики»), которые будут вызваны в момент наступления события.
ZForms.attachObserver(
String sEventType,
Function fCallBack,
ZForms.Widget oObservable = ZForms
);Где:
При вызове функции обратного вызова ей будут переданы два обязательных параметра: sEventType (тип произошедшего события) и oWidget (виджет, в котором событие произошло), то есть функция обратного вызова должна быть объявлена следующим образом:
var fCallBack = function(
sEventType,
oWidget
) {
// действия функции
};У некоторых событий (например, «Изменение состояния формы») есть третий, дополнительный параметр, который может быть объявлен и использован в функции обратного вызвана.
Далее описаны все типы событий, определенных в ZForms.
Тип события: ZForms.EVENT_TYPE_ON_INIT
Данное событие генерируется после создания объектов всех форм на странице. Используется как точка входа для установки всех остальных обработчиков событий.
Поддерживающий объект — ZForms.
Тип события: ZForms.EVENT_TYPE_ON_CHANGE
Данное событие генерируется в момент изменения значения виджета, причем неважно что именно привело к изменению — действие пользователя или установка значения извне.
Поддерживающие виджеты:
ZForms.Widget.TextZForms.Widget.Text.NumberZForms.Widget.SelectZForms.Widget.Text.ComboZForms.Widget.Container.DateZForms.Widget.Container.Group.CheckBoxZForms.Widget.Container.Group.RadioButton<form class="zf" id="form-1" action=".">
<dl>
<dt><label for="input-last-name-1">Имя</label></dt>
<dd><input class="zf" type="text" id="input-last-name-1" /></dd>
</dl>
<dl>
<dt><label for="input-last-name-copy-1">Копия</label></dt>
<dd><input class="zf" type="text" id="input-last-name-copy-1" /></dd>
</dl>
</form>
<script type="text/javascript">
//<![CDATA[
ZForms.attachObserver(
ZForms.EVENT_TYPE_ON_INIT,
function() {
var
oForm = ZForms.getFormById('form-1'),
oNameWidget = oForm.getWidgetById('input-last-name-1'),
oCopyWidget = oForm.getWidgetById('input-last-name-copy-1')
;
ZForms.attachObserver(
ZForms.EVENT_TYPE_ON_CHANGE,
function(sEventType, oWidget) {
oCopyWidget.setValue(oCopyWidget.createValue(oWidget.getValue().get()));
},
oNameWidget
);
}
);
//]]>
</script>Тип события: ZForms.EVENT_TYPE_ON_BEFORE_SUBMIT
Данное событие генерируется непосредственно перед отправкой формы, после того как выполнены все условия валидаций, проверок и т.д.
Поддерживающие виджеты:
Тип события: ZForms.EVENT_TYPE_ON_READY_CHANGE
Данное событие генерируется в момент изменения состояния готовности формы к отправке (заполненность необходимых виджетов и валидность их данных).
Поддерживающие виджеты:
Дополнительный параметр функции обратного вызова: bReady, указывает на то, готова или нет форма к отправке.