2013-02-15 2 views
0

У меня есть этот сценарий, где он перебирает массив и его предполагается проверить, если каждое из значений в массиве является электронная почта с этой функцией:.each JQuery() из цикла

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]); после проверки, если адрес электронной почты, если ложные или не отображает только первое значение, которое говорит мне, что это только перебираю если заявление один, однако, я проверил электронную почту и должно работать Безразлично 't пройти через это утверждение if.

Если предупреждение сразу после каждой функции, оно выполняет итерацию через значения в корне.

Опять же, электронные письма верны и должны выполняться с использованием оператора if как истинного.

Я просто хочу знать, что я делаю неправильно, потому что он только передает инструкцию if один раз, если в массиве есть несколько значений.

Благодаря

EDIT

У меня также есть это перед каждой функцией

<div>[email protected], [email protected]</div> 


var emails = $('div').text(); 
var arrayEmail = emails.split(','); 
+0

Поместить 'alert (arrayEmail [i] +" "+ isEmail (arrayEmail [i]));' перед if, возможно, что-то не так с вашим регулярным выражением. –

+0

@TomWijsman функционирует так, как предполагалось. Кроме того, я отредактировал свой OP, чтобы вы знали, что для получения моих значений я использовал этот код внутри div – hellomello

+0

Пожалуйста, создайте скрипку с некоторыми примерными данными. –

ответ

3

После разделить текст сНа элемента вашего массив становится этим: element0 = «[email protected] " element1 =" [email protected] "

2-й элемент имеет ведущее место и не соответствует регулярному выражение.

Попробуйте с этим div: test @ gmail.com, fresh @ hotmail.com без пробела, и вы поймете.

На конце обрезная строка перед ее проверкой.

+1

На самом деле это: var checkEmail = isEmail ($. Trim (arrayEmail [i])); и покончить с этим. –

+0

Моя проблема в том, что если кто-то вставляет пробел. эти значения являются входами, поэтому я хочу, чтобы у пользователя была свобода, если они хотят использовать пространство или нет. Мне нравится @VeljaRadenkovic ответ, однако, мое второе значение получает ложное утверждение вместо того, чтобы быть правдой? Но это должно быть правдой, потому что его правильный адрес электронной почты, любые предложения? – hellomello

+0

Его false, потому что он не соответствует шаблону регулярного выражения. Он не соответствует шаблону regexp из-за ведущего пространства. Если кто-то вводит пробел в пространство, выполнив то, что я разместил выше: var checkEmail = isEmail ($. Trim (arrayEmail [i])); –

Смежные вопросы