我一直致力于简单的电子邮件验证。但它没有用。
为什么它不起作用的任何想法?我做错了什么,还是应该以其他方式构建我的代码?
我做了这样的功能:
ImageButton btnsave = (sender) as ImageButton;
然后我在function IsEmail(email) {
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(!regex.test(email)) {
return false;
} else {
return true;
}
}
函数中调用该函数。
我的JS看起来像这样:
setupRegistration
答案 0 :(得分:1)
@ Mario-Chueca是对的。您的代码大部分都正常工作,但是,无论电子邮件是否正确,您是否正在进行Ajax调用,因此未显示错误消息。您应该只在指定的电子邮件有效时进行ajax调用:
if(username != "" && email != "" && password != "" && IsEmail(email)){
ajaxCall(username, email, password);
}
我在下面添加了一个代码示例,以表明您的电子邮件验证(没有Ajax调用)正常工作。我已经包含了@Abdulla建议的if(!IsEmail(email){
修正,我还添加了一个更复杂的正则表达式来自post。
function IsEmail(email) {
//var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
//More advanced regex to valid 99.99% of most emails in use, see https://stackoverflow.com/questions/46155/validate-email-address-in-javascript
var regex = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
if (!regex.test(email)) {
return false;
} else {
return true;
}
}
function doOutputMessage(type, message) {
$("#outputMessage").html("");
$("#outputMessage").removeClass();
$("#outputMessage").hide();
if (type == "error") {
$("#outputMessage").addClass("error").fadeIn("fast");
} else if (type == "success") {
$("#outputMessage").addClass("success").fadeIn("fast");
}
$("#outputMessage").text(message);
$("#outputMessage").show();
}
//if (IsEmail('john.doe@stackoverflow.com')) {
// doOutputMessage('success', 'valid email')
//}
if (!IsEmail('john.doe#stackoverflow.com')) {
doOutputMessage('error', 'invalid email')
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="outputMessage">Test</div>
&#13;
答案 1 :(得分:1)
使用之前的一些建议,但也改变了这一点,错误不会停止ajax调用:
var error_email=false;
if(!IsEmail(email)){
error_email=true;
doOutputMessage("error", "mailen är fel förfan");
}
if(password == ""){
doOutputMessage("error", "Fill in your desired password!");
}
if(username != "" && email != "" && password != "" && !error_email){
ajaxCall(username, email, password);
}
答案 2 :(得分:0)
删除此处的false
if(!IsEmail(email){
和regex
应为
regex = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
答案 3 :(得分:0)
请尝试:
function IsEmail(email){
var reg = /^[a-zA-Z0-9\.\-\+]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/
return reg.test(email)
}