在我的交易訂單表單中,如果用戶選擇訂單類型=「限制」,則必須指定限價。我試圖使用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 2015-11-12 20:34:22