2012-07-21 80 views
0

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

好了,我不能讓,因爲它是唯一有條件時需提供該領域。有什麼辦法可以解決這個問題嗎?

回答

1

回答我自己的問題。

原來,驗證引擎不驗證隱藏字段(雖然這不是明確的documented。所以解決方法是隱藏limitPriceItem字段不需要。現在我可以把「validate [required,custom [number] ]」關於限價領域,它證明,只有當字段可見。

+0

順便說一句,在應聘的源代碼,我發現所謂的‘validateNonVisibleFields’一個未公開的選項,可以設置爲true,這將強制驗證不可見的字段。 – BardMorgan 2015-11-12 20:34:22

相關問題