首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery-Validation-Engine:基于其他字段的必填字段

jQuery-Validation-Engine:基于其他字段的必填字段
EN

Stack Overflow用户
提问于 2012-07-22 03:53:57
回答 2查看 2.9K关注 0票数 0

在我的交易订单表单中,如果用户选择订单类型= " limit“,则必须指定一个限价。我正在尝试使用funcCall强制执行此规则,但它不起作用。如果选择了限制订单,并且将限制价格字段留空,则验证引擎会成功验证表单。这是我的HTML:

代码语言:javascript
复制
<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函数:

代码语言:javascript
复制
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行):

代码语言:javascript
复制
// If the rules required is not added, an empty field is not validated
if(!required && field.val() == "") options.isError = false;

嗯,我不能将该字段设置为必填字段,因为它只是有条件的必填字段。有什么办法可以解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-26 17:10:00

回答我自己的问题。

结果是验证引擎不验证隐藏字段(尽管这不是显式的documented。因此,解决方案是在字段不是必填字段时隐藏limitPriceItem。现在,我可以在limit price字段中输入"validate[required,customnumber]“,它只在该字段可见时进行验证。

票数 1
EN

Stack Overflow用户

发布于 2014-01-08 02:42:19

您还可以使用condRequired请参阅http://posabsolute.github.io/jQuery-Validation-Engine/#validators/condrequired

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11595415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档