jQuery validationEngine没有正确验证匹配字段

时间:2012-10-08 00:03:52

标签: wordpress forms validation jquery-validation-engine

我有一个自定义的注册表单,我在两个不同的网站上使用。有两个字段,user_pass和pass2。 user_pass字段具有以下验证类:

class="validate[required,custom[password],minLength[7]]"

语言文件中的自定义正则表达式如下所示:

 "password":{
     "regex": /^(.*\\d.{2,})|(.*[@#?$%^&+=\\*].*)(.?[a-z].*)$/,
     "alertText": "* Must contain letters, numbers and symbols."
  },

然后pass2字段具有以下验证类:

class="validate[required,equals[user_pass]]"

如果您转到mosleyfamilies.net/user-registration,则可以看到该表单的实际效果。当您按照说明输入密码然后在下一个字段中完全重复时,您将得到一个不匹配错误的字段 - 即使它们确实存在。

如果您转到uniquelyyours.blogdns.com/simple-registration并执行完全相同的操作,则密码将正确验证。 Firebug没有显示任何错误,我试图禁用一些我认为可能会干扰的插件,但这没有做任何事情。

对于我的生活,当两个网站上的所有内容完全相同时,我无法弄清楚为什么这些字段在mosleyfamilies.net上没有验证。任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:0)

我不知道这是否能解决所有问题,但是,如果你想限制最小字符数,你应该在你的第一段代码中使用minSize而不是minLenght。

class="validate[required,custom[password],minSize[7]]" 

Validation Examples

答案 1 :(得分:0)

虽然我不清楚我的类似问题是否与原始海报的例子相符,但由于未提供元素ID,我遇到了类似的问题。似乎jquery.validation.js引擎中的equals函数依赖于要匹配的元素的id。例如:

    <input name="email" type="email" class="validate[required,custom[email]]">
    <input name="confirm_eml" type="email" class="validate[required,custom[email],equals[email]">

无效,因为“equals”函数需要一个元素id才能锁定。只需添加id,就像这样:

    <input name="email" type="email" id="email" class="validate[required,custom[email]]">
    <input name="confirm_eml" type="email" class="validate[required,custom[email],equals[email]]">