Javascript 向jquery验证插件添加自定义验证程序时未显示错误消息

Javascript 向jquery验证插件添加自定义验证程序时未显示错误消息,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,对于我目前面临的问题,我找不到类似的解决方案。我正在使用jquery验证插件来验证表单。我添加了两个自定义验证器方法来验证下拉列表,另一个用于验证文本框。下拉式验证工作正常,但文本框验证仅“部分”工作。我之所以说“部分”,是因为实际的验证部分可以工作,但应该显示的错误消息却不显示。讨论中的字段是id3文本字段,它是关联的javascript 这是我的html: css处于混乱状态,但为了完整起见,这里是: 以下是小提琴的链接: 感谢您的帮助 我终于弄明白了。我的自定义验证器缺少一行代码。这

对于我目前面临的问题,我找不到类似的解决方案。我正在使用jquery验证插件来验证表单。我添加了两个自定义验证器方法来验证下拉列表,另一个用于验证文本框。下拉式验证工作正常,但文本框验证仅“部分”工作。我之所以说“部分”,是因为实际的验证部分可以工作,但应该显示的错误消息却不显示。讨论中的字段是id3文本字段,它是关联的javascript

这是我的html:



css处于混乱状态,但为了完整起见,这里是:


以下是小提琴的链接:


感谢您的帮助

我终于弄明白了。我的自定义验证器缺少一行代码。这就是我的自定义验证器在修复错误后的外观:

$.validator.addMethod("booknameExists", function(value){
   return checkName();
 }, "Book name must not pre-exist");
缺少的部分是:return checkName(); 已经10年没有使用验证插件了,这是一个重新学习的过程,我也不再是大学毕业生了!Thx对@Sparky的努力表示感谢-将对他的评论进行投票表决


(注:对于任何想要寻找完整代码的人来说,我在给Sparky的回复中发布的JSFIDLE已经拥有了全部代码——唯一的变化就是上面的代码片段)

我终于找到了答案。我的自定义验证器缺少一行代码。这就是我的自定义验证器在修复错误后的外观:

$.validator.addMethod("booknameExists", function(value){
   return checkName();
 }, "Book name must not pre-exist");
缺少的部分是:return checkName(); 已经10年没有使用验证插件了,这是一个重新学习的过程,我也不再是大学毕业生了!Thx对@Sparky的努力表示感谢-将对他的评论进行投票表决


(注:对于任何想要寻找完整代码的人来说,我在给Sparky的回复中发布的JSFIDLE已经拥有了全部代码——唯一的变化就是上面的代码片段)

我不明白你在做什么。如果要使用jQuery验证插件,则不需要编写所有在模糊和添加/删除消息时触发的手动验证函数。。。插件会自动处理所有这些繁琐的事情。@Sparky-我相信我需要这个自定义验证器用于以下场景:我需要通过循环json对象并确保json对象中不存在textVal来验证在文本字段中输入的值(我们称之为textVal)。如果json对象中已经存在textVal,那么我需要用错误消息标记它,让用户知道既然textVal已经存在,他们需要输入不同的值。据我所知,jQueryValidate插件可以检查required、minlength、maxlength等,但上面的内容必须是自定义验证。我错了吗?我想你可能误解了插件的功能。它根据各种事件触发的规则检查字段、应用类、显示消息等,所有这些都是自动执行的。当规则不存在时创建自定义方法。。。就像您需要使字段的值与现有规则未涵盖的某些条件匹配一样;例如,来自不知名国家的手机号码格式。即使如此,该插件仍然会自动显示/隐藏消息并应用类。提示:查找并使用
.addMethod()
创建新规则。@Sparky-我会倒霉的!我以为我把它放在小提琴的顶部,但由于某种原因,小提琴没有保存它,因此也没有显示出来。这里是我再次创建的一个,w/the.addMethod(),但问题是相同的-如果您输入所有必需的字段,然后在“Book Name”字段中输入“Shaspeare”,您将看到控制台显示,由于“Shaspeare”已经是json对象(authorlist)中的现有值,nameIsValid显示为false(正确)。但是,不会显示关联的错误消息-booknameExists。我不明白你在干什么。如果要使用jQuery验证插件,则不需要编写所有在模糊和添加/删除消息时触发的手动验证函数。。。插件会自动处理所有这些繁琐的事情。@Sparky-我相信我需要这个自定义验证器用于以下场景:我需要通过循环json对象并确保json对象中不存在textVal来验证在文本字段中输入的值(我们称之为textVal)。如果json对象中已经存在textVal,那么我需要用错误消息标记它,让用户知道既然textVal已经存在,他们需要输入不同的值。据我所知,jQueryValidate插件可以检查required、minlength、maxlength等,但上面的内容必须是自定义验证。我错了吗?我想你可能误解了插件的功能。它根据各种事件触发的规则检查字段、应用类、显示消息等,所有这些都是自动执行的。当规则不存在时创建自定义方法。。。就像您需要使字段的值与现有规则未涵盖的某些条件匹配一样;例如,来自不知名国家的手机号码格式。即使如此,该插件仍然会自动显示/隐藏消息并应用类。提示:查找并使用
.addMethod()
创建新规则。@Sparky-我会倒霉的!我以为我把它放在小提琴的顶部,但由于某种原因,小提琴没有保存它,因此也没有显示出来。这里是我再次创建的一个,w/the.addMethod(),但问题是相同的-如果您输入所有必需的字段,然后在“Book Name”字段中输入“Shaspeare”,您将看到控制台显示,由于“Shaspeare”已经是json对象(authorlist)中的现有值,nameIsValid显示为false(正确)。但是,不会显示关联的错误消息-booknameExists。为什么不在
.addMethod()
内部使用相同的逻辑,而不是整个外部函数?为什么不在
 .hideDiv {
    display: none;
  }

.has-error {
   color: red;
 }
$.validator.addMethod("booknameExists", function(value){
   return checkName();
 }, "Book name must not pre-exist");