代码之家  ›  专栏  ›  技术社区  ›  pixeline

jquery验证插件:添加自定义方法

  •  0
  • pixeline  · 技术社区  · 15 年前

    我需要一些关于如何向jquery validate插件添加验证方法的指导。我已经收集到我需要使用插件的 addMethod() 功能,但如何让它做我需要的…我在这里!

    我的表格的第一个问题是无线电输入选择。如果选中,每个收音机输入都会显示一个子问题,其中包含多个复选框。

    我希望我的确认是: -确保选择了一个无线电输入 -确保至少选中一个与收音机输入相关的复选框。

    基本上,根据validate插件自己的逻辑,我会计算选择器的长度,如果没有,则返回错误消息。像这样的:

    var weekSelected = ($('input.seasonSelector:checked input.weekSelector:checked',form).length > 0);
    if(!weekSelected){
    return 'Please select a week inside that season';
    }
    

    如何将其转换为验证插件方法?

    更新

    以下是根据您的反馈得出的成功答案:

    $('#newInscription').validate({
            rules: {
                "season_id": "required",
                "weeks[]": {
                    required: {
                        depends: function() {
                            return $(this).parents(".seasonSelector:checked");
                        }
                    }
                }
            }
            ,
    ...
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   tvanfosson    15 年前

    为什么不将收音机作为必需的元素,而将每个子问题作为必需的元素,而依赖于相关的收音机?你应该可以通过添加规则来做到这一点。如果每组复选框都有相同的名称,则会更容易。

    $("form").validate({
         rules: {
             "Season": "required",
             "SpringWeeks": {
                  required: {
                       depends: function() {
                           return $(".seasonSelector:checked").val() == "Spring";
                       }
                  }
             }
             ...
    });
    
    <input type="radio" name="Season" value="Spring"  />
    ...