私の取引注文フォームで、ユーザーが注文タイプ = "指値" を選択した場合、指値価格を指定する必要があります。funcCall を使用してこのルールを適用しようとしていますが、機能していません。指値注文が選択され、指値フィールドが空白のままの場合、検証エンジンはフォームを正常に検証します。ここに私のHTMLがあります:
<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;
条件付きでのみ必須なので、フィールドを必須にすることはできません。この問題を回避する方法はありますか?