2016-06-16 18 views
0

Ich habe eine Eingabe, die eine Nachricht für ein ungültiges E-Mail-Format anzeigen. Diese Nachricht verschwindet, wenn das Format respektiert wird.Javascript - Entfernen Sie den Fokus von Eingabe

$('#id_email.form-control').keyup(function(){ 
$('span.error-keyup-email').remove(); 
var inputVal = $(this).val(); 
var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
if(!emailReg.test(inputVal)){ 
    $(this).after('<span style="color:red;" class="error error-keyup-email">Invalid Email Format.</span>'); 
} 
}); 

Der Code funktioniert sehr gut. Genau das wollte ich.

Problem: Wenn ich eine E-Mail auswähle, die ich bereits vom Browser gespeichert habe (Normalerweise speichert es E-Mail oder Pseudo für den Benutzer). Wenn ich meine E-Mail nicht eintippe und stattdessen meine E-Mail-Adresse auswähle, bleibt die Nachricht weiterhin unter der Eingabe, selbst wenn es sich um ein korrektes E-Mail-Format handelt.

Haben Sie eine Idee?

kann ich Ihnen weitere Informationen geben, wenn Sie wollen, und ich danke Ihnen Zeit auf mein Problem für die Aufnahme :)

einen schönen Tag :)

+3

gefüllt sind Versuchen 'input' Ereignis mit – Rayon

Antwort

1

Versuchen verloren:

$('#id_email.form-control').on('input', function(){ 
$('span.error-keyup-email').remove(); 
var inputVal = $(this).val(); 
var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
if(!emailReg.test(inputVal)){ 
    $(this).after('<span style="color:red;" class="error error-keyup-email">Invalid Email Format.</span>'); 
} 
}); 

keyup nur einmal ausgelöst, wird die Taste gedrückt. Eingang Feuer sofort, wenn der Wert

0

// entfernen Fehlerspanne in sonst

$('#id_email.form-control').keyup(function(){ 
    $('span.error-keyup-email').remove(); 
    var inputVal = $(this).val(); 
    var emailReg = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 
    if(!emailReg.test(inputVal)){ 
     $(this).after('<span style="color:red;" class="error error-keyup-email">Invalid Email Format.</span>'); 
    } 
    else{ 
     $('span.error-keyup-email').remove(); 
    } 
    }); 
0

Verwendung Eingangsänderung Ereignis, das auto genannt, wenn der Fokus dieses

$('#id_email.form-control').change(function(){ 

}); 
1

Die Frage ändert, ist, dass, wenn Autofill aus dem Browser verwenden, müssen Sie irgendwie erkennen. Leider wird in diesem Fall das Änderungsereignis der Eingabe nicht ausgelöst.

könnte eine mögliche Lösung, die alle Eingabefelder onload zu durchlaufen und überprüfen, ob sie in