我有这个脚本循环数组,它应该检查数组中的每个值是否是具有此功能的电子邮件:
function isEmail(email) {
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
假设要查看数组:
$.each(arrayEmail,function(i){
var checkEmail = isEmail(arrayEmail[i]);
if(checkEmail != false){
alert(arrayEmail[i]);
var message = $('#sendMsg textarea.emailMsg').val();
$.ajax({
type:'post',
url:'ajax_inviteMsg.php',
data: 'to='+$.trim(arrayEmail[i])+'&message='+message,
success: function(data){
alert(data);
}
});
}
});
alert(arrayEmail[i]);
检查电子邮件是否为假或仅显示第一个值,这告诉我它只迭代if语句一个,但是,我已经测试了电子邮件,应该工作不通过if语句传递。
如果警报在每个函数之后,它会相应地迭代值。
同样,电子邮件是真的,应该通过if语句迭代为真。
我只是想知道我做错了什么,如果数组中有多个值,它只传递一次if语句。
由于
修改
我在每个函数之前都有这个
<div>test@gmail.com, fresh@hotmail.com</div>
var emails = $('div').text();
var arrayEmail = emails.split(',');
答案 0 :(得分:3)
在拆分div元素的文本后,您的数组将变为: element0 =“test@gmail.com” element1 =“fresh@hotmail.com”
第二个元素有前导空格,无法匹配正则表达式。
尝试使用这个div:test @ gmail.com,fresh @ hotmail.com没有空格,你会明白的。
在验证之前在结束修剪字符串上。