0

JavaScript を使用して電子メールを検証しようとしていますが、何らかの理由で機能していません。
問題: 有効な電子メール アドレスを入力ても、アドレスに誤りがあるという警告が引き続き表示されます
。コードは次のとおりです。

    $(document).ready(function(){

    $('.info').hide();
    $('#button').click(function(){

    var name = encodeURIComponent($('#name').val());
    var email = encodeURIComponent($('#email').val());
    var message = encodeURIComponent($('#message').val());
    var reg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;



    //if name is empty
    if($('#name').val() == 0){

    $('.info').html('<p style="font-weight:bold;text-align:center;font-size:20px;"> Molimo unesite Vaše ime!</p>').fadeIn(1000);
    }
    //if name is less than three characters
    else if(name.length < 3){
    $('.info').html('<p style="font-weight:bold;text-align:center;font-size:20px;"> Molimo unesite ime duže od tri slova!</p>').fadeIn(1000);

    }
     // if email is empty
     if ($('#email').val() == 0){
    $('.info').html('<p style="font-weight:bold;text-align:center;font-size:20px;"> Molimo unesite Email!</p>').fadeIn(1000);

    }
    // if email AND name are empty
    if($('#email').val() == 0 && $('#name').val() == 0 ){
    $('.info').html('<p style="font-weight:bold;text-align:center;font-size:20px;"> Molimo unesite Email!<br/>Molimo unesite ime!</p>').fadeIn(1000);

    }
    //if mail adress is NOT valid
    if(reg.test(email)==false){
    //alert('please enter valid mail!');
    $('.info').html('<p style="font-weight:bold;text-align:center;font-size:20px;">Molimo unesite ispravan Mail!</p>').fadeIn(1000);
    }

            //if mail adress IS VALID (this is not working...)
    if($('#name')!= '' && reg.test(email) !=false ){

            //alert(data);
    var data = 'name=' + name + '&email=' + email + '&message=' + message;

           $.ajax({
           type:"POST",
           url:'kontakt2.php',
           cache:'false',//IE FIX
           data: data,

           success: function(){
           //alert('THX for your mail!');
           } //end sucess 
           });
           } //end if statment for VALID mail
           //return false prevent Redirection
           return false;
           });


           });
4

3 に答える 3

2

この線

if($('#name')!= '' && reg.test(email) !=false )

おそらくあるはずです

if($('#name').val()!= '' && reg.test(email) !=false )

(または単にif (name != '' && reg.test(email) != false )

于 2012-06-25T16:55:44.207 に答える
0

このコードを変更することでこれを解決できました:

if($('#name').val()!= '' && reg.test(email) !=false )

これに:

if(reg.test($('#email').val()) && $('#name').val()!='')

encodeURIComponentのため、 reg.test(email)部分の上のコードが機能しなかったと確信しています。答えてくれた Thx Rodolfo と Pointy :)

于 2012-06-25T19:22:08.273 に答える
0

このステートメントでは、入力値が 0 かどうかを確認しています。これは、空のフィールドを確認する方法ではありません。

if ( $('#name').val() == 0 )

少し良い方法は次のとおりです。

if ( !$('#name').val() )
于 2012-06-25T17:03:58.940 に答える