0

我有这个脚本,它在其中循环遍历一个数组,它应该检查数组中的每个值是否是带有此函数的电子邮件:

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(',');
4

1 回答 1

3

拆分 div 元素的文本后,您的数组变为: element0 = "test@gmail.com" element1 = "fresh@hotmail.com"

第二个元素有前导空格并且无法匹配正则表达式。

试试这个 div:test@gmail.com,fresh@hotmail.com 没有空格,你会明白的。

在验证它之前在结束修剪字符串上。

于 2013-02-15T23:39:56.543 回答