我正在使用一个带有名称,电子邮件和评论字段的简单表单来发送来自网页的消息。还有一个隐藏的标题字段,如果你愿意的话,它应该是空的,以便提交表单 - 垃圾邮件保护。
我在提交之前运行表单的JQuery代码工作正常,但目前只在电子邮件地址字段中查找“@”字符。我想要的是更好地检查格式正确的电子邮件地址。
这是代码。
$(function() {
$('.error').hide();
$(".button").click(function() {
// validate and process form here
$('.error').hide();
var name = $("input#name").val();
if (name == "") {
$("label#name_error").show();
$("input#name").focus();
return false;
}
var email = $("input#email").val();
if (!(email.indexOf('@') > 0)) {
$("label#email2_error").show();
$("input#email").focus();
return false;
}
var message = $("textarea#message").val();
if (message == "") {
$("label#message_error").show();
$("textarea#message").focus();
return false;
}
var title = $("input#title").val()
if(title !== "") {
$("input#title").focus();
return false;
}
var dataString = 'name='+ name + '&email=' + email + '&message=' + message;
//alert (dataString);return false;
$.ajax({
type: "POST",
url: "sendmail.php",
data: dataString,
success: function() {
$('#message_form').html("<div id='response'></div>");
$('#response').html("<div id='content_success_block' class='shadow_box'>")
.append("<div id='success_image'><img src='assets/misc/success.png'></div>")
.append("<div id='success_text'>Thanks for contacting us! We will be in touch soon.</div>")
.append("</div>")
.hide()
.fadeIn(2500, function() {
$('#response');
});
}
});
return false;
});
});
感谢任何帮助。
答案 0 :(得分:16)
最适合“我”的那个
function validEmail(v) {
var r = new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
return (v.match(r) == null) ? false : true;
}
你应该真正阅读THIS。它提供了有关电子邮件正则表达式的大量信息,以及为什么没有真正好的“全部,全部”解决方案。简而言之,您必须确定哪些对您的预期用户最有利。
Incorperated
}
var email = $("input#email").val();
if (!validEmail(email)) {
$("label#email2_error").show();
$("input#email").focus();
return false;
}
您可能尝试的备用策略:我倾向于检查keypress timeout上的电子邮件(因此,如果并非所有字段都准备就绪,则可以淡出提交按钮)
答案 1 :(得分:2)
在该文本框中调用该函数onBlur事件,您要在其中检查有效的电子邮件。
function validateForm()
{
var x = document.getElementById('txtEmail');
var atpos=x.value.indexOf("@");
var dotpos=x.value.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Not a valid e-mail address");
return false;
}
}
答案 2 :(得分:1)
只是说明一个更明显的函数,在测试电子邮件值时返回true或false。使用regExp.test(value)
var emailIsValid = function(value){
var regex = new RegExp ("^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$");
return regex.test(value);
}
var email = $("input#email").val();
if (!emailIsValid(email)) {
$("label#email2_error").show();
$("input#email").focus();
return false;
}
答案 3 :(得分:-1)
上面的正则表达式(SpYk3HH)的问题在于它验证了如下内容: .me @ gmail.c 我认为最好的方法是使用一些ajax来调用PHP函数(如果你确实使用PHP)这样的事情:
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
echo "Email Not Valid ! ";