Этот вид зависимостей (ZForms.Dependence.TYPE_VALID) проверяет правильность заполненность виджета.
oValid : {
String sType : null,
RegExp rPattern : null,
Object oCompare : null,
Function fFunction : null,
String sName : null,
String sId : null,
Boolean bInverse : false,
String sClassName : null,
Boolean bCheckForEmpty : false,
String sLogic : 'and',
Array aFrom : []
}Первые четыре параметра определяют, каким образом будет проводится валидация данных (параметры являются взаимоисключающими в порядке следования, т.е. если передан sType, все остальные не учитываются и т.д.):
Вторая группа параметров является дополнительной:
id виджета. Применяется только в том случае, когда несколько виджетов имеют одинаковое имя, а зависимость нужно указать от конкретного виджета.[{ sName : 'имя_виджета_1', sType : null, … }, …, { sName : 'имя_виджета_N', sType : null, … }]. Параметр необходим, когда проверка заполненности виджета зависит не только от самого себя, но и (или) от других виджетов. Каждый из элементов этого массива может включать все предыдущие параметры.На данный момент поддерживается только один тип — email.
<form class="zf" action=".">
<dl>
<dt><label for="input-email">Эл. адрес</label></dt>
<dd><input class="zf" type="text" name="email" id="input-email" onclick="return { oValid : { sType : 'email' } }" /></dd>
</dl>
</form>
Значение виджета проверяется с помощью заданного регулярного выражения. Вместо регулярного выражения может быть указана строка (в этом случае проверяется полное совпадение).
<form class="zf" action=".">
<dl>
<dt><label for="input-login">Логин</label></dt>
<dd><input class="zf" type="text" name="login" id="input-login" onclick="return { oValid : { rPattern : /^[a-zA-Z_][a-zA-Z0-9_]*$/ }, oRequired : {} }" /></dd>
</dl>
</form>
Позволяет сравнивает значение виджетов между собой или значение виджета с простым значением. Объект сравнения:
oCompare : {
String sCondition : 'eq',
String sName : null,
String mValue : null
}Где:
eq (=), gt (>), gte (>=), lt (<), lte (<=).<form class="zf" action=".">
<dl>
<dt><label for="input-password">Пароль</label></dt>
<dd><input class="zf" type="password" name="password" id="input-password" onclick="return { oRequired : { iMin : 5 } }" /></dd>
</dl>
<dl>
<dt><label for="input-password-confirm">Пароль еще раз</label></dt>
<dd><input class="zf" type="password" name="password-confirm" id="input-password-confirm" onclick="return { oRequired : { iMin : 5 }, oValid : { oCompare : { sName : 'password' } } }" /></dd>
<dd class="zf-hint zf-hint-invalid"><i class="zf-arrow"></i>должно совпадать с полем «Пароль»</dd>
</dl>
</form>
<form class="zf" action=".">
<dl class="zf-date-box">
<dt><label for="input-datefrom">Дата поступления</label></dt>
<dd><input class="zf zf-date" type="text" name="date-from" id="input-date-from" onclick="return { oRequired : {} }" /></dd>
</dl>
<dl class="zf-date-box">
<dt><label for="input-date-to">Дата окончания</label></dt>
<dd><input class="zf zf-date" type="text" name="date-to" id="input-date-to" onclick="return { oValid : { oCompare : { sCondition : 'gt', sName : 'date-from' } }, oRequired : {} }" /></dd>
</dl>
</form><form class="zf" action=".">
<dl>
<dt><label for="input-sum">Cумма кредита</label></dt>
<dd><input class="zf zf-number" type="text" name="sum" id="input-sum" size="5" onclick="return { oValid : { aFrom : [{ oCompare : { sCondition : 'gte', mValue : 1000 } }, { oCompare : { sCondition : 'lte', mValue : 50000 } }] } }" /></dd>
<dd class="zf-hint"><i class="zf-arrow"></i>от 1000 до 50000</dd>
</dl>
</form>
Позволяет создать сложное условие валидации с помощью функции. Функция получает два параметра и должна возвратить true или false, в зависимости от результата проверки:
function checkSomething(
ZForms.Widget oWidget,
ZForms.Dependence oDependence
) {
// проверка
return true; /* или false */
}Где:
<form class="zf" action=".">
<dl>
<dt><label for="input-sum2">Cумма кредита</label></dt>
<dd><input class="zf zf-number" type="text" name="sum" id="input-sum2" size="5" onclick="return { oValid : { fFunction : function(oWidget) { return oWidget.getValue().isEmpty() || (oWidget.getValue().isGreaterOrEqual(1000) && oWidget.getValue().isLessOrEqual(50000)); } } }" /></dd>
<dd class="zf-hint"><i class="zf-arrow"></i>от 1000 до 50000</dd>
</dl>
</form>