jqueryvalidate插件-RegEx电子邮件前缀、域名后缀和重复签入一次!

jqueryvalidate插件-RegEx电子邮件前缀、域名后缀和重复签入一次!,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用很棒的JQuery插件,到目前为止,非常好——我甚至让它通过输入的电子邮件地址检查数据库,以确保不能输入重复的电子邮件。然而,为了扩展这一点,我还想确保电子邮件前缀(在@符号之前)至少包含一个句点(.)——这是为了确保用户使用的是他们的firstname.lastname电子邮件地址,而不是firstletterlastname电子邮件地址(并防止他们使用每种格式拥有两个帐户) 如前所述,地址本身的远程验证工作正常,但问题是响应仅以JSON真/假值的形式返回-如果我可以在服务器端脚本中

我正在使用很棒的JQuery插件,到目前为止,非常好——我甚至让它通过输入的电子邮件地址检查数据库,以确保不能输入重复的电子邮件。然而,为了扩展这一点,我还想确保电子邮件前缀(在@符号之前)至少包含一个句点(.)——这是为了确保用户使用的是他们的firstname.lastname电子邮件地址,而不是firstletterlastname电子邮件地址(并防止他们使用每种格式拥有两个帐户)

如前所述,地址本身的远程验证工作正常,但问题是响应仅以JSON真/假值的形式返回-如果我可以在服务器端脚本中对其进行验证,然后传回字符串值,则可能有某种方式显示与错误对应的字段的错误消息-例如:“您的电子邮件必须是firstname.lastname”、“电子邮件后缀必须是company.com”和“该电子邮件地址已注册”。我一直在阅读JQuery文档进行验证,但我发现没有什么比“真”或“假”更能让我返回

多亏了安德鲁的帮助,我终于解决了这个问题,还有这篇帖子: 关键是要确保字符串被封装在双引号中,而传递回的真正字符串不是,因此它将正确计算,并且不会显示错误消息。对于JQuery和Aweasome验证插件来说,是的!

任何关于如何实现这一点的想法/建议都将不胜感激,考虑到我在SO上查看了所有700多个JQuery验证条目,也许这也会对其他人有所裨益。提前感谢

下面是我正在做的一些代码:

$("#MemberInfo").validate({
    errorPlacement: function(error, element) {
           error.insertAfter(element);
       },
    rules: {
        Memberemail: {
            required: true,
            //minlength: 1,
            email: true,
            remote: {
                url: "checkReg.cfm",
                dataType: "json"
            }
        },

    },
    messages: {
        Memberemail: {
            required: "Please enter a valid @company.com email address",
            minlength: "Please enter a vaild email address",
            remote: jQuery.format("{0} is already registered")  
        }
    }
});

查看
远程
选项的文档:

响应的计算结果为JSON和 对于有效元素,必须为true,并且 可以是任何false、未定义或null 对于无效元素,请使用 默认消息;或字符串,例如。 “该名称已被使用,请重试 peter123改为“显示为 错误消息。


因此,在服务器端代码中,如果返回字符串,它应该显示为错误消息。

不幸的是,您陷入了我(和其他人)编写此文档的相同陷阱-如果查看我的示例代码,代码的messages:部分中的remote:部分将显示字段的值(即{0})在字符串中-不是响应返回的内容。我已经尝试将响应设置为true或false以外的其他内容,在这些情况下,脚本会失败而不会出错。您只能返回true/false,而不能返回字符串,但可以将字段的值作为错误消息放在字符串中。一个更新:通过将dataType:text属性添加到e remote:我的规则的一部分:部分,我现在返回一个字符串-但现在的问题是如何根据返回的内容显示正确的消息-即使“true”也会显示!是否有方法将IF:语句放在远程中,以便根据返回的字符串显示不同的消息(如果所有内容都已签出,则不会显示消息)?@Joyrex:听起来你取得了一些进展--我会做一些挖掘,看看能不能找到什么。谢谢你的更新!Andrew:谢谢你的帮助和支持-我取得了更大的进展,我在服务器端设置了所有错误消息,因此响应中作为字符串传递的内容显示了所有不同的情况s、 我现在遇到的唯一问题是,如果没有错误,就不会显示错误-对于有效的条目,我会发送“true”,但因为我不再以JSON的形式发送,它只打印“true”,并且不会告诉验证器插件不要显示任何内容。@Joyrex:您是否可以返回一个布尔
true
值而不是字符串“true”“在值有效的情况下?我不确定您的服务器端代码是什么样子的(而且我对PHP也不太了解),但这可能是一种方法。