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: theaccept
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 Validation - 仅验证来自多个必填字段的 2 个字段 [重复]