[英]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]]”放在限價字段,僅當字段可見時才會驗證。
你也可以使用condRequired參見http://posabsolute.github.io/jQuery-Validation-Engine/#validators/condrequired
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.