jQuery 表单验证,仅允许 .EDU 电子邮件地址

Posted

技术标签:

【中文标题】jQuery 表单验证,仅允许 .EDU 电子邮件地址【英文标题】:jQuery Form Validation, Only Allow .EDU Email Addresses 【发布时间】:2012-01-30 23:22:27 【问题描述】:

我正在使用位于此处的 jquery 验证功能和插件。 http://docs.jquery.com/Plugins/Validation

我正在浏览 js 文件,我找到了确保它是有效电子邮件的电子邮件验证块,问题是,我只想允许 .edu 电子邮件。我不知道从哪里开始。

【问题讨论】:

【参考方案1】:

你可以扩展它并添加你自己的规则。

jQuery.validator.addMethod("edu", function(value, element) 
  // Make it work optionally OR
  //  Check the last 4 characters and ensure they match .edu
  return (this.optional(element) || value.slice(-4) == ".edu"); 
, "You must use a .edu email address");

$("#myform").validate(
  rules: 
    field: 
      required: true,
      email: true,
      edu: true
    
  
);

这是一个jsfiddle,展示了它们如何协同工作以及错误如何级联。只需按下按钮。

【讨论】:

【参考方案2】:

您不需要自定义扩展。你可以使用accept()方法:http://docs.jquery.com/Plugins/Validation/Methods/accept#extension

// input field
<input type="text" id="eduEmail2" name="eduEmail2" value="abc@123.edu"/>

// validation rule
eduEmail2: 
    required: true,
    email: true,
    accept: 'edu'

完整示例:http://jsfiddle.net/M5TmU/2/(基于 Brombomb 的 jsfiddle)

更新

在 xecute 的评论之后 - 您可以使用自定义正则表达式模式。在additional-methods.js 中,您有“pattern”方法(文件中的最后一个):

eduEmail3: 
    required: true,
    email: true,
    pattern: /(\.edu\.\w\w)$/

完整示例:http://jsfiddle.net/M5TmU/3/

当然它并不完美,但仍然 - 你不需要编写自定义方法:)

附加编辑:国家域名有两个字母,所以\w\w\w? 太多了 - \w\w 应该这样做。我把\w\w\w?留在了小提琴中

【讨论】:

本地化怎么样? “edu.fr”、“edu.tr”、“edu.ru”、“edu.de”..?他们也是大学生。 正是我想要的。太棒了! 哇,这真是太棒了! As per the documentation: the accept method "makes a file upload accept only specified mime-types"。 〜这与OP的问题有什么关系? @Sparky: 链接还提到:“注意:此方法过去只查看文件名,特别是文件扩展名。该行为现在可用作 src/additional/extension 中的“扩展”方法.js.";在撰写本文时就是这种情况【参考方案3】:

您可能仍会收到来自非 .edu 电子邮件地址的垃圾邮件。

我建议检查电子邮件域服务器端。

所以电子邮件必须是 .edu 否则不会邮寄。

否则,如果我在浏览器中关闭 javascript,我可以提交任何电子邮件地址,它会发送。

【讨论】:

他只是想向人们展示没有.edu扩展名的电子邮件是不允许的。当然,如果你在做JS过滤等,你必须再次控制服务器端。没有服务器端控制,这是不可接受的。

以上是关于jQuery 表单验证,仅允许 .EDU 电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

jquery验证文本输入数组仅验证第一个字段[重复]

jQuery Validation - 仅验证来自多个必填字段的 2 个字段 [重复]

是否有符合我对多表单验证要求的 jQuery 插件? [关闭]

Jquery循环为表单验证输出错误的错误信息

仅保存按钮上的 jQuery 表单验证

使用验证插件 jquery 验证输入数组 - 显示每个输入的错误