2016-05-25 11 views
0

電子メールアドレスが入力されていても有効ではないというメッセージを表示します。値が入力されていなければ、私はメッセージを表示したくない - ちょうど入力枠線を赤にする。電子メールが入力されたが有効な電子メールではない場合にのみメッセージを表示する電子メールの妥当性確認

私はこれを試してみましたが、それはフィールドが空の場合でも、メッセージを示しています

function validateEmail($email) { 
 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
 
    return emailReg.test($email); 
 
} 
 
if($(element).hasClass('email')) { 
 
    if(!validateEmail($('.email'))) { 
 
    $('<span>Please enter a valid email address</span>').insertAfter($(element)); 
 
    } 
 
}

私もqjeuryの検証プラグインで試してみましたが、この場合には、それはで電子メールのエラーが表示されませんすべて:

var emails = ['email']; 
 
for(var i=0;i< emails.length;i++) { 
 
    var email = emails[i]; 
 
    rules[email] = {}; 
 
    rules[email].email = true; 
 
    rules[email].required = true; 
 
    msgs[email] = { 
 
    required:'', 
 
    email : "Please enter a valid email address", 
 
    } 
 
} 
 

 
var validateObj   = {} 
 
validateObj["rules"]  = rules; 
 
validateObj["messages"] = msgs; 
 
validateObj["onkeyup"] = function(element) { $(element).valid();}; 
 
validateObj["success"] = function(element) {}; 
 
validateObj["submitHandler"] = function (form) { 
 
    form.submit(); 
 
} 
 
$("#form").validate(validateObj);

+1

私ができます」現在はテストしていませんが、jqueryの検証コードは非常に奇妙で非標準的です。これは非常に一般的な使用例です。使用できるコードサンプルがたくさんあるはずです。電子メールの検証にカスタム正規表現を使用することは避けてください。 – user1751825

+0

それはカスタムではありません、私はjqueryバリデーションプラグインを使用しています、ちょうどこの方法で書かれています。私はオブジェクトのルール、メッセージを定義します。それは単なる構文です。 –

答えて

1

私は自分でそれを行うにしようとしなかった人を助けてるように私は本当に感じて...

あなたは、あなたの入力が空であるかどうかをテストする($(element).val())を使用することができます。この1つは機能するために

、単に色の境界にempty-emailクラスを宣言

if($(element).hasClass('email')) { 
    if($(element).val()){ 
     if(!validateEmail($(element))) { 
      $('<span>').text('Please enter a valid email address').insertAfter($(element)); 
     } 
    }else{ 
     $(element).addClass('empty-email'); 
    } 
} 
+0

ああ、本当に、私は非常に疲れていると私は考えていませんでした:( –

+0

それはまだカスタム電子メールの検証を使用するので、良い解決策ではありません。 – user1751825

1

私はjqueryの検証を使用して私の場合は解決策を見つけた:

var emails = ['email']; 
 
for(var i=0;i< emails.length;i++) { 
 
    var email = emails[i]; 
 
    rules[email] = {}; 
 
    rules[email].email = true; 
 
    rules[email].required = true; 
 
    msgs[email] = {}; 
 
    msgs[email] = { 
 
    required:'', 
 
    email : "Please enter a valid email address", 
 
    } 
 
} 
 

 
if($(element).hasClass('email')) { 
 

 
    error.insertAfter($(element)); 
 

 
} 
 

 
};

関連する問題