2017-11-24 11 views
0

異なるStackOverflowの回答から最も一般的な検証方法をコピーしましたが、問題の電子メールは常に有効ではないようです。したがって、2番目の条件は決して実行されません。何が間違っているのですか?電子メールの検証は常に失敗しています

function validateEmail(email) { 
    var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    return re.test(email); 
} 
var emailaddress = document.getElementById("email_input").value; 
$("#email_input").keydown(function(emailaddress) { 
    if (!validateEmail(emailaddress)) { 
    $('#enter_valid_email').remove() 
    $('<span class="enter_smth_valid" id="enter_valid_email">Enter valid email</span>').insertAfter('#email_input') 
    } else { 
    alert(); 
    $('#enter_valid_email').remove() 
    } 
}); 
+6

'のKeyDownイベントハンドラでemailaddress'がイベント、ではありません値。あなたは 'this.value'か' emailaddress.target.value'のどちらかで入力値を得ることができます。どちらの場合でも、そのパラメータの名前を 'event'または' e'に変更することを提案します。 – Taplar

答えて

0

​​に渡された関数は、イベントハンドラである - それは(あなたがそれを必要とする場合)、それに渡される最初のパラメータとしてイベントオブジェクトを受け取ります。あなたはそれをテキストそのものとして扱っています。小さな変化が、問題を解決します:

あなたはまた、その上にこの行を削除することができます - それは何もしません:

var emailaddress = document.getElementById("email_input").value;

関連する問題