2017-11-24 5 views
0

Ich kopierte die gängigste Validierungsmethode aus verschiedenen StackOverflow-Antworten, aber die Problem-E-Mail scheint immer nicht gültig zu sein. Diese zweite Bedingung wird also nie ausgeführt. Was verstehe ich falsch?E-Mail-Validierung schlägt immer fehl

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

'emailaddress' im keydown Event-Handler ist das Ereignis, nicht die Wert. Sie können den Wert der Eingabe entweder mit 'this.value' oder' emailaddress.target.value' ermitteln. Obwohl ich vorschlagen würde, diesen Parameter in jedem Fall auf "event" oder "e" umzubenennen. – Taplar

Antwort

0

Die Funktion keydown geben wird, ist ein Event-Handler - es erhält ein Ereignisobjekt als ersten Parameter an sie übergeben (wenn Sie es brauchen). Sie behandeln das als den Text selbst. Eine kleine Änderung wird das Problem beheben:

Sie können diese Zeile darüber, dass auch entfernen - es tut nichts:

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