我正在尝试使用下面的代码验证电子邮件,目前它正在测试电子邮件以查看它是否与正则表达式匹配,但即使输入了有效的电子邮件,错误也会激活,页面也不会提交
$('#emailsubmit').submit(function() {
var email = new RegExp(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
if (!("#emailAddr").match(email)) {
$("#errormsg").html("Please insert a valid email");
$("#errormsg").show();
var emailaddr = $("#emailAddr").val();
alert(emailaddr);
return false;
}
});
答案 0 :(得分:3)
你忘了使用JQuery的.val()
方法来获取元素的值。相反,你试图在HTML元素上使用.match()
(这显然不是字符串)。代码:
$('#emailsubmit').submit(function() {
var email = new RegExp(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);
if (!("#emailAddr").val().match(email)) {
$("#errormsg").html("Please insert a valid email");
$("#errormsg").show();
var emailaddr = $("#emailAddr").val();
alert(emailaddr);
return false;
}
});
答案 1 :(得分:0)
您匹配的值是“#emailAddr”,而不是ID为“emailAddr”的元素的值。
答案 2 :(得分:0)
这是我的脚本,我已经使用了一段时间......它运行良好,还可以检查邮政编码和其他表单字段以供输入。
function checkEmail(e_mail) {
var str = new String(e_mail);
var biz_name = document.myForm.biz_name;
var zip_code = document.myForm.zip_code;
var e_mail = document.myForm.e_mail;
var str2 = new String(zip_code);
var terms = document.myForm.terms;
if (biz_name.value == "")
{
window.alert("Oops. Please enter your business name!");
biz_name.focus();
return false;
}
if (zip_code.value == "")
{
window.alert("Oops. Please enter your business zip code!");
zip_code.focus();
return false;
}
if (e_mail.value == "")
{
window.alert("Oops. Please enter your email address!");
e_mail.focus();
return false;
}
if (terms.checked == false)
{
window.alert("Oops. Please agree to the terms and conditions!");
terms.focus();
return false;
}
var isOK = true;
rExp = /[!\"£$%\^&*()-+=<>,\'#?\\|¬`\/\[\]]/
if( rExp.test(str) )
isOK = false;
if( str.indexOf('.') == -1 || str.indexOf('@') == -1 )
isOK = false;
if( str.slice(str.lastIndexOf('.')+1,str.length).length < 2 )
isOK = false;
if( str.slice(0,str.indexOf('@')).length < 1 )
isOK = false;
if( str.slice(str.indexOf('@')+1,str.lastIndexOf('.')).length < 1 )
isOK = false;
if( !isOK )
alert( "Oops! A valid email is needed. Check it and try again!" );
e_mail.focus();
return isOK;
}