5

名前、電子メール、コメント フィールドを持つ単純なフォームを使用して、Web ページからメッセージを送信しています。フォームを送信するために空にする必要がある非表示のタイトル フィールドもあります - 必要に応じてスパム対策を行います。

送信前にフォームを実行している JQuery コードは問題なく動作しますが、現在、電子メール アドレス フィールドで "@" 文字のみを探しています。私が欲しいのは、正しい形式の電子メール アドレスをより適切にチェックすることです。

これがコードです。

    $(function() {  
    $('.error').hide();  
    $(".button").click(function() {  
    // validate and process form here  

        $('.error').hide();  
        var name = $("input#name").val();  
            if (name == "") {  
            $("label#name_error").show();  
            $("input#name").focus();  
            return false;
        }  
        var email = $("input#email").val();  
            if (!(email.indexOf('@') > 0)) {
            $("label#email2_error").show();  
            $("input#email").focus();  
        return false;  
        }  
        var message = $("textarea#message").val();  
            if (message == "") {  
            $("label#message_error").show();  
            $("textarea#message").focus();  
        return false;  
        } 
        var title = $("input#title").val()
            if(title !== "") {  
            $("input#title").focus();  
        return false;  
        } 

    var dataString = 'name='+ name + '&email=' + email + '&message=' + message;  
    //alert (dataString);return false;  
    $.ajax({  
        type: "POST",  
        url: "sendmail.php",  
        data: dataString,  
        success: function() {  
            $('#message_form').html("<div id='response'></div>");  
            $('#response').html("<div id='content_success_block' class='shadow_box'>")  
                .append("<div id='success_image'><img src='assets/misc/success.png'></div>")
                .append("<div id='success_text'>Thanks for contacting us! We will be in touch soon.</div>")
                .append("</div>")                   
            .hide()  
            .fadeIn(2500, function() {  
                $('#response');  
            }); 
        }  
    });  
    return false; 
    });

});

どんな助けでも大歓迎です。

4

4 に答える 4

16

「私」のために最もよく働いたもの

function validEmail(v) {
    var r = new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
    return (v.match(r) == null) ? false : true;
}

重要!

あなたは本当にこれを読むべきです。これは、Regex for Emailsに関する多くの情報を提供し、なぜ本当に良い「すべてであり、すべてを終わらせる」ソリューションがないのかを示します。つまり、予想されるユーザーにとって何が最適かを判断する必要があります。


組み込まれています

}  
var email = $("input#email").val();  
if (!validEmail(email)) {
    $("label#email2_error").show();  
    $("input#email").focus();  
    return false;  
}  

あなたが試みるかもしれない別の戦略:私はキープレスのタイムアウトで電子メールをチェックする傾向があります(したがって、すべてのフィールドが準備できていない場合に送信ボタンをフェードアウトする機能を許可します)

于 2012-04-16T16:52:35.650 に答える
2

有効な電子メールをチェックしたい、そのテキスト ボックスの onBlur イベント関数を呼び出します。

 function validateForm()
{
 var x = document.getElementById('txtEmail');
 var atpos=x.value.indexOf("@");
 var dotpos=x.value.lastIndexOf(".");
 if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
  {
    alert("Not a valid e-mail address");
    return false;
  }
}
于 2012-04-16T17:55:41.473 に答える
1

電子メールの値がテストされたときに true または false を返す、より明白な関数を述べているだけです。を使用してregExp.test(value)

 var emailIsValid =  function(value){
        var regex = new RegExp ("^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$");
        return regex.test(value);
    }

var email = $("input#email").val();  
        if (!emailIsValid(email)) {
           $("label#email2_error").show();  
           $("input#email").focus();  
        return false;  
        }  
于 2016-08-07T03:50:36.030 に答える