簡體   English   中英

jQuery-Validation-Engine:基於另一個字段的必填字段

[英]jQuery-Validation-Engine: Required field based on another field

在我的交易訂單表格中,如果用戶選擇訂單類型=“限制”,則必須指定限價。 我試圖使用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;

好吧,我不能讓所需的字段,因為它只是有條件的要求。 有什么方法可以解決這個問題嗎?

回答我自己的問題。

事實證明,驗證引擎不會驗證隱藏字段(雖然沒有明確記錄 。所以解決方案是在不需要字段時隱藏limitPriceItem。現在我可以將“validate [required,custom [number]]”放在限價字段,僅當字段可見時才會驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM