0

私の取引注文フォームで、ユーザーが注文タイプ = "指値" を選択した場合、指値価格を指定する必要があります。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;

条件付きでのみ必須なので、フィールドを必須にすることはできません。この問題を回避する方法はありますか?

4

2 に答える 2

1

私自身の質問に答えます。

検証エンジンは隠しフィールドを検証しないことが判明しました (ただし、これは明示的に文書化されていません。したがって、解決策は、フィールドが必須でない場合に limitPriceItem を非表示にすることでした。今では、"validate[required,custom[number]]" を価格フィールドを制限し、フィールドが表示されている場合にのみ検証します。

于 2012-07-26T09:10:00.163 に答える
1

condRequired を使用することもできますhttp://posabsolute.github.io/jQuery-Validation-Engine/#validators/condrequiredを参照してください

于 2014-01-07T18:42:18.893 に答える