【问题标题】:Jquery Validation : Adding/Removing Rules Dynamically based on dropdown selectionJquery Validation:基于下拉选择动态添加/删除规则
【发布时间】:2012-06-13 21:21:53
【问题描述】:

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

这很好用,然而(作为验证插件的文档)只为返回的 first 元素添加验证。

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

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

    });

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

【问题讨论】:

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


    【解决方案1】:

    您只需要在您的.slice() 结果上使用.each() 函数即可遍历它返回的所有元素:

    $('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" });
    });
    

    希望这会有所帮助!

    【讨论】:

    • 感谢@FreekOne,这是一个很大的帮助。它正确添加了规则,但显示/隐藏停止正常工作。我对其进行了一些更改,现在可以使用了-谢谢:- code$('input[id*=conviction]').slice(0, inputtohide).show().each(function(){ $(this) .rules("add", {required: "#convictions_0:checked" }); }); $('input[id*=conviction]').slice(inputtohide, 4).hide().each(function(){ $(this).rules("remove", {required: "#convictions_0:checked" }); }); code
    • @naturelab 我不知道为什么show / hide 会因为代码正确而停止工作,但我很高兴能帮上忙!
    猜你喜欢
    • 1970-01-01
    • 2019-03-16
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2014-08-16
    • 1970-01-01
    • 2012-06-11
    相关资源
    最近更新 更多