jQuery的.each()循环

时间:2013-02-15 23:14:08

标签: jquery ajax arrays if-statement each

我有这个脚本循环数组,它应该检查数组中的每个值是否是具有此功能的电子邮件:

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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