В моей форме заказа на продажу, если пользователь выбирает тип заказа = «лимит», тогда должна быть указана предельная цена. Я пытаюсь применить это правило с помощью funcCall, но он не работает. Если выбран лимит-ордер и поле предельной цены оставлено пустым, механизм проверки корректно проверяет форму. Вот мой HTML:jQuery-Validation-Engine: обязательное поле на основе другого поля
<li>
<label for=tradeForm_orderType>Order Type</label>
<select id=tradeForm_orderType name=orderParams.type>
<option value=Market>Market</option>
<option value=Limit>Limit</option>
</select>
</li>
<li id=tradeForm_limitPriceItem>
<label for=tradeForm_limitPrice>Limit Price</label>
<input class="validate[funcCall[checkLimitOrder],custom[number]]"
type=text name=orderParams.limitPrice.amount id=tradeForm_limitPrice>
</li>
И вот моя checkLimitOrder функция:
function checkLimitOrder(field, rules, i, options) {
if ($('#tradeForm_orderType').val() === 'Limit' && field.val().length === 0) {
return 'Please enter a limit price';
}
}
Это почти работает! checkLimitOrder действительно вызывается и возвращает сообщение об ошибке. Однако по возвращении, проверка двигатель Jquery игнорирует сообщение об ошибке на основе следующей логики (строки 582-583):
// If the rules required is not added, an empty field is not validated
if(!required && field.val() == "") options.isError = false;
Ну, я не могу сделать поле, необходимое, как это только условно требуется. Есть ли способ обойти эту проблему?
Кстати, в то время как просматривал исходный код, я нашел недокументированный вариант под названием„validateNonVisibleFields“, который может должен быть установлен в true, что приведет к проверке невидимых полей. – BardMorgan