0

単独で正常に機能するjqueryメール検証を見つけました。チェックボックスと空のフィールドを検証するために、他の関数に追加しました。完全なコードはこちら: http://jsfiddle.net/vUAGs/4/

     function validateEmail(email) {
      var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
      if( !emailReg.test( email ) ) {
        add_color(email, 'orange');
        return false;
      } else {
        add_color(email, white);
        return true;
      }
    }

電子メールが有効であっても、フォームは無効を返します。

4

3 に答える 3

2

私はあなたのフィドルにいくつかの変更を加えましたが、今では動作します....コードを改良できます;)

HTML:

<input class="email_val" type="email" id="emailin" value=""/>

JS:

function validate_form(){

        $('form input:not(.checkbox_wrapper input, .email_val), textarea').each(function(){
            if ($(this).val() == '') {
                add_color($(this), red);
            }
            else {
                add_color($(this), white);
            }

        });
       var emailin = $('#emailin').val();
       return (validateEmail(emailin) && check_Radio_Checkb() && true);

    }


 function validateEmail(emailin) {

         var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  alert(regex.test(emailin));

      if( !regex.test( emailin ) ) {
        add_color(email, 'orange');

        return false;
      } else {
        add_color(email, white);

          return true;
      }

    }

ここで動作するフィドルを参照してください: http://jsfiddle.net/vUAGs/9/

于 2013-05-09T15:07:44.210 に答える
1

電子メール アドレスではなく、jQuery オブジェクトを validateEmail に渡しています。

function validate_form(){

        $('form input:not(.checkbox_wrapper input, .email_val), textarea').each(function(){
            if ($(this).val() == '') {
                add_color($(this), red);
            }
            else {
                add_color($(this), white);
            }

        });
                    //              V right here
        return (!validateEmail(email.val()) && check_Radio_Checkb() && true); // Notice change here

    }

その変更を行うと、機能し始めます。

于 2013-05-09T14:41:06.197 に答える
0

入力フィールドを渡しているので、入力フィールドの値を取得する必要があります。

デモ: http://jsfiddle.net/tive/vUcVa/

emailReg関数スコープ内でグローバルを宣言するときに、次のように関数を短縮することもできます。

function validateEmail(email) {
    var isValid = emailReg.test(email.val());
    if (!isValid) {
        add_color(email, 'orange');
    } else {
        add_color(email, "green");
    }
    alert(isValid);
    return isValid;
}

validate_form()関数の return ステートメントには、あなたが行ったような反転は必要ないことに注意してください。少し読みやすくなりました^^

于 2013-05-09T14:46:35.783 に答える