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

nat*_*lab 6 validation jquery dynamic jquery-validate drop-down-menu

我有一个下拉选择器,值为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();
});
Run Code Online (Sandbox Code Playgroud)

这工作得很好,(如文档的验证插件状态)验证仅增加了对第一个元素返回.

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

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

    });
Run Code Online (Sandbox Code Playgroud)

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

Val*_*sel 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" });
});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !