Jquery验证:根据下拉选择动态添加/删除规则

时间:2012-06-13 21:21:53

标签: jquery validation dynamic drop-down-menu jquery-validate

我有一个下拉选择器,其值为1-4。根据选择,隐藏表格中的后续输入,并从每个输入中删除所需的验证。 例如,如果选择2,则显示输入1-2并添加所需验证,同时隐藏3-4并验证删除。

$("#dropdownSelector").change(function() {
inputtohide = $(this).val();
$('input[id*=conviction]').slice(0, inputtohide).show().rules("add", {required: "#convictions_0:checked" });
$('input[id*=conviction]').slice(inputtohide, 4).hide().rules("remove", {required: "#convictions_0:checked" });
$("#thisform").validate();
});

这很好,然而(正如验证插件的文档所述)验证仅为返回的第一个元素添加。

我从其他帖子中了解到,以下代码应为每个输入添加验证: -

$("#thisform").validate();
$("input[id*=conviction]").each(function() {
    $(this).rules("add", {required: "#convictions_0:checked" });

    });

我的问题是如何组合这两位代码的? 非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:5)

您只需要在.each()结果上使用.slice()函数,以便迭代它返回的所有元素:

$('input[id*=conviction]').slice(0, inputtohide).each(function(){
    $(this).show().rules("add", {required: "#convictions_0:checked" });
});

$('input[id*=conviction]').slice(inputtohide, 4).each(function(){
    $(this).hide().rules("remove", {required: "#convictions_0:checked" });
});

希望这有帮助!