这是我的代码,用于动态更新jQuery验证。在文档加载中,我创建了验证。此代码用于动态更新电话号码验证。在应用此验证后,当我在电话号码文本框中输入任何内容时,我将收到无法调用未定义错误的方法“call”。
$("#phone").rules("remove");
$("#phone")
.rules(
"add",
{
required:true,
minlength:5,
maxlength:20,
phoneUS:true,
messages:{
required: "Enter company phone number",
minlength:"Phone number should contain a minimum of 5 characters",
maxlength:"Phone number should contain a maximum of 20 characters",
phoneUS:"Enter valid phone number"
}
});
字符串
这怎么解决?!
6条答案
按热度按时间j9per5c41#
有四个潜在的问题。
1)
messages
部分缺少一个右括号。字符串
DEMO:http://jsfiddle.net/A8HQU/2
2)有a known bug,使用
rules('add')
方法添加messages
会破坏插件和/或规则。请绝对确保您包含jQuery 1.11.1或更高版本。3)
phoneUS
规则要求包含theadditional-methods.js
file。4)
rules('add')
方法必须在.validate()
初始化函数之后。备注:
您正在使用
phoneUS
规则,因此minlength
和maxlength
完全是多余的,因为phoneUS
规则已经在寻找精确的格式/长度。umuewwlo2#
我遇到了同样的问题,但原因不同。当我把规则“require:true”而不是“required:true”时,同样的问题也会发生。
当您在规则中指定了一个没有对应方法的验证时,就会发生此错误。通过调试,我发现异常正在显示我通过方法名称指定了一个规则“require”。它试图访问hashmap中的方法,并尝试.call(),即使找不到该方法,这也会导致异常。
如果插件作者在这种情况下简单地抛出一个自定义错误,声明“规则'require'没有方法”,那么调试和识别错别字就更容易了。
这也是同样的原因臭名昭著的问题与插件提交,即使字段是无效的。见&投票给我的问题报告-https://github.com/jzaefferer/jquery-validation/issues/1212
zy1mlcev3#
作为一个相关的错误,如果你添加一个自定义规则,使用:
字符串
但是在你的规则声明中用错误的名字引用它:
型
你会得到相同的
Cannot call method call of undefined
。bmvo0sr54#
运行此示例代码时发生错误:
字符串
为什么?由于某些原因,如果你明确指定:
型
程序将抛出上述异常。这是当你设置任何或以上两个选项为'true'的情况。另一方面,如果你设置两个为'false'或一个为'false'并删除另一个,它将按预期工作。
最重要的是:如果您删除或注解掉这些选项中的任何一个,您删除的选项将被设置为默认值,即'true'并且不会抛出任何错误。因此,可以按照您想要的方式自定义验证插件,您只需要记住不要显式地将这些选项设置为'true'。
l2osamch5#
上面的代码将无法工作,因为它在属性列表后缺少
}
。tktrz96b6#
您还需要添加此附加方法
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/additional-methods.js