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);
            }

    });
    }
});

メールがfalseかどうかを確認したalert(arrayEmail[i]);後、最初の値が表示されるだけで、ifステートメントのみを反復処理することがわかりますが、メールをテストしましたが、動作するはずですが、そのifステートメントを通過しません。

各関数の直後にアラートが発生した場合、値を正しく反復処理します。

繰り返しますが、電子メールは true であり、if ステートメントを true として反復処理する必要があります。

配列に複数の値がある場合、ifステートメントを1回だけ渡すという、私が間違っていることを知りたいだけです。

ありがとう

編集

各関数の前にもこれがあります

<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"

2 番目の要素の先頭にスペースがあり、正規表現と一致しません。

この div を試してみてください: test@gmail.com,fresh@hotmail.com スペースなしで、理解できます。

最後に、検証する前に文字列をトリムします。

于 2013-02-15T23:39:56.543 に答える