我有一个电子邮件输入字段在我的表单。验证是使用javascript完成的。电子邮件验证没有问题,它工作正确。但我想检查电子邮件的附加条件,如果有人没有电子邮件,他/她可以在字段中键入"no"。这是"NO"或有效的电子邮件是允许的。请帮帮我。我现在的邮件规则是
My_email: {
required: true,
email:true,
},
对于javascript验证,如果使用jquery,请查看jquery validate
http://jqueryvalidation.org/documentation/简单例子创建规则 var loginValidationConfig = {
wrapper: "div",
rules: {
password: {
required: true,
},
email: {
required: true,
email: true
}
},
messages: {
password: {
required: "<i class='sprite-attentionw_error_icon'></i>The username or password you entered is incorrect.<br />Please try again.",
},
email: {
required: "<i class='sprite-attentionw_error_icon'></i>The username or password you entered is incorrect.<br />Please try again.",
email: "<i class='sprite-attentionw_error_icon'></i>The username or password you entered is incorrect.<br />Please try again."
}
}
}
然后在表单上写
$(this).validate(loginValidationConfig);
将在字段旁边打印验证无论如何,你至少需要阅读部分文档
如果验证电子邮件地址的函数是对Sudakatux的回答的评论中给出的函数
var checkMail = function IsEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+'@(([a-zA-Z0-9-])+'.)+([a-zA-Z0-9]2,4})+$+no+NO/;
return regex.test(email);
}
这让我怀疑它是否能有效地验证电子邮件地址(例如:结尾的"museum"比你假设的仅仅四个字母多一点),但这可能是C& p的问题,当然,加上缺乏格式化注释的能力,所以我认为它是有效的。
如前所述:除了一些基本的检查之外,您不验证电子邮件地址客户端,例如:是否有@-sign和一些点,并通过发送电子邮件(不仅仅是测试电子邮件!)来完成其余的工作,并查看它是否反弹。对于这种类型的检查,有一些经过良好测试的正则表达式可以在网上找到,但也可以在这里找到。
用最简单的方法
var checkMail = function (email) {
var regex = /^.+@[^@]+?'.[a-zA-Z]+$/;
return regex.test(email);
}
与
var email1 = "a.s@g.a"; // correct but does not exist
var email2 = "a@g";
var email3 = "ag.de";
var email4 = "ag.@.d@e";
var email5 = "a@g@d.de";
console.log("1 " + checkMail(email1));
console.log("2 " + checkMail(email2));
console.log("3 " + checkMail(email3));
console.log("4 " + checkMail(email4));
console.log("5 " + checkMail(email5));
但这不是你想要的,你想要检查不止一个值,并根据这个值做一些不同的事情。您可以使用正则表达式检查其中一个值是否存在,但不知道是哪一个。你需要两个正则表达式。
假设你想要"NO"(大写"N"和大写"O")
var checkMail = function (email) {
var regexEmail = /^.+@[^@]+?'.[a-zA-Z]+$/;
var regexNO = /^NO$/;
if(!regexEmail.test(email)){
if(!regexNO.test(email)){
return -1; // nothing in it
}
return 1; // Intentionally no email address given
}
return 2; // something vaguely resembling an email given
}
你可以这样用:
var valueEmailField = checkMail(email)
if(valueEmailField > 0){
if(valueEmailField == 1){
// User said "NO", act accordingly
}
// user gave something email-like, act accordingly
}
else {
// email field empty, act accordingly
}
从用户的角度来看,最好使用复选框而不是文本输入。复选框更不容易出错。是的,有可能打错两个字母的单词。
作为选项,例如:
[]我希望你的回答通过电子邮件发送,请使用以下地址:|___________________________|邮箱地址
好吧,也许比这更优雅一点;-)
先测试复选框,如果复选框被选中,测试条目的有效性