基于一些其他元素可见性jquery验证插件排除ignore

时间:2013-11-26 15:36:37

标签: javascript jquery jquery-validate

我目前正在开发一个具有以下代码的项目

$('form').validate({
    rules: {
        ....
        'final_input': {
            require:true
        }
    },
    ignore: ':hidden'
});

我有一个自定义下拉列表插件,它将根据隐藏的输入生成。代码看起来像

<input type="checkbox" />
<div id="dropdownlist" style="display: none">
    <div class="option"></div>
    <div class="option"></div>
    <div class="option"></div>
    <input id="final_input" name="final_input" type="text" style="display: none" />
</div>

下拉列表也会隐藏,直到选中复选框。目前,它将忽略所有隐藏的元素。所以我的final_input将不会被验证。如果我把一些东西忽略如下:hidden:not('#final_input')。无论如何,它都会验证它。但是我只想在下拉列表可见时验证它。有没有人知道我怎样才能从忽略中排除final_input只有在可见的下拉列表中?或者选中复选框?

1 个答案:

答案 0 :(得分:0)

相反,包含/排除隐藏的输入元素,使用depends方法使required规则依赖于其他内容。

为了简化演示,我的示例不使用自定义下拉菜单,但是,您可以使用一个,我的方法将使用相同的方法。 To disable the ignoring of all hidden fields, use ignore: []

在此基本演示中,勾选复选框或显示下拉列表时,文本字段仅为required

    ignore: [], // <-- do not ignore any hidden fields
    rules: {
        final_input: {
            required: {
                depends: function () {
                    return ( $('#dropdownlist').is(':visible') || $('#check').is(':checked') );
                }
            }
        }
    }

DEMO(隐身选择):http://jsfiddle.net/AZYpf/

相同的DEMO(可见选择):http://jsfiddle.net/AZYpf/1/

自定义选择器:http://jqueryvalidation.org/category/selectors/