尝试使用jQuery Validate插件验证依赖于其他选项的字段时出错

时间:2011-04-13 22:41:28

标签: jquery jquery-plugins jquery-validate

我正在使用jQuery Validate表单。我需要添加一些功能,因此如果从选择/下拉菜单中选择了特定选项,则需要额外的字段。

以下是他们在jQuery网站上提供的示例,如果在复选框中选中了一个选项(http://docs.jquery.com/Plugins/Validation/validate#options),则需要一个certrain字段:

$(".selector").validate({
   rules: {
     contact: {
       required: true,
       email: {
         depends: function(element) {
           return $("#contactform_email:checked")
         }
       }
     }
   }
})

如果选择了特定选项,我会将它显示在显示其他字段的位置。选择菜单失去焦点后,控制台中会出现以下错误:

  

未捕获的TypeError:无法调用方法   未定义的“呼叫”

我在JSFiddle上发布了一个示例。如果有人可以看看我会非常感激。我需要尽快开始工作!

http://jsfiddle.net/2EfPZ/

2 个答案:

答案 0 :(得分:4)

发生错误是因为您需要将depends函数与特定验证规则相关联:

$form.validate({
    rules: {
        favoriteSport: {
            required: true
        },
        position: {
            required: {
                depends: function(element) {
                    return $('#favoriteSport').val() === '1';
                }
            }
        },
        player: {
            required: {
                depends: function(element) {
                    return $("#favoriteSport").val() === '1';
                }
            }
        }
    },
    messages: {
        favoriteSport: "You must select a favorite sport",
        position: "You must select a position because you selected football",
        player: "You must select a player because you selected football"
    }
});

工作示例:http://jsfiddle.net/2EfPZ/20/

答案 1 :(得分:3)

修正了你的小提琴(并简化了一点):

http://jsfiddle.net/2EfPZ/21/

由于以下特点:

ignore: ':hidden'