我正在尝试评估表单文本/电子邮件字段以查看是否存在某些内容,如果有,请将其运行到正则表达式评估之后。当我使用其余逻辑将正则表达式代码包含在SendEmail函数中时,它工作正常但是当我尝试将正则表达式部分移动到它自己的函数(validateEmailAddress)时,验证仍然有效,但它没有&#39 ; t似乎想要返回false而只是停止。相反,它继续到ajax部分并发送电子邮件,无论它是否通过正则表达式测试。这是相同的代码所以我不确定为什么"返回false"一旦将正则表达式移动到其自身的功能中,它就不起作用。
任何想法都表示赞赏,谢谢!
function validateEmailAddress(address) {
filter = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
if (!filter.test(address)) {
alert(address + ' - Is an invalid email address.');
return false;
}
}
function SendEmail() {
var emailFromVal = document.getElementById("EmailFrom").value;
var emailToVal = document.getElementById("EmailTo").value;
if (emailFromVal != 0) {
validateEmailAddress(emailFromVal);
} else {
alert("Please provide your email address.");
return false;
}
if (emailToVal != 0) {
}
else {
alert("Please provide your friend's email address.");
return false;
}
$.ajax({
method: 'POST',
url: '/_ajax/emailshare/',
dataType: 'json',
data: formCollection,
success: function (data) {
///send that email out
}
});
}
答案 0 :(得分:0)
你没有对validateEmailAddress()
的返回值做任何事情,试试这个:
if (emailFromVal != 0) {
if(!validateEmailAddress(emailFromVal)){
return false;
}
} else {
alert("Please provide your email address.");
return false;
}
另外,当电子邮件有效时,您需要从validateEmailAddress()
返回true:
function validateEmailAddress(address) {
filter = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
if (!filter.test(address)) {
alert(address + ' - Is an invalid email address.');
return false;
}
return true;
}
答案 1 :(得分:0)
return false;
中的 validateEmailAddress
将仅从validateEmailAddress
返回,而不是从封闭函数(SendEmail
)返回。
您的选择是:
检查附件中validateEmailAddress
的返回值
功能:
if(!validateEmailAddress(address))返回false;
OR