Onclick und inputfield?
Hallo zusammen,
Ich würde gerne eine demo-version von einem Loginformular erstellen.
Problem : ich habe zwei Inputfelder einmal type="email" und type="password"
Darunter befindet sich ein Button type="button". Ich möchte, wenn im Inputfield type="email" ein @ zeichen eingegeben wird, beziehungsweise die eingabe korrekt war ein onclick event startet sobald man auf den Button Einloggen drückt.. Leider klappt das nicht ganz. Da er das onclick Event auch auslöst, wenn man nur jeweils ein Zeichen in Password und email input setzt. Da ich nur value.length als if Abfrage genommen habe. Wie schaffe ich das das Event erst startet wenn man erkennt, dass das Inputfeld ein @ Zeichen enthält.
Type="submit" funktioniert nicht , da die Seite dann ja neu geladen wird und alle Änderungen vom onclick Event weg sind.
4 Antworten
Hänge dich an das submit-Event. Mit der preventDefault-Methode kannst du die Ausführung des Standard-Handler verhinden. Das heißt, der Browser wird keinen Request verschicken, was das Neuladen der Seite bewirken würde.
HTML-Formular:
<form id="some-form">
<input required type="email">
<button>Send</button>
</form>
JavaScript:
document.getElementById("some-form").addEventListener("submit", evt => {
evt.preventDefault();
/* do something ... */
});
Die Validation der E-Mail kann der Browser übernehmen. Die Voraussetzung dafür ist, dass das Eingabefeld vom Typ email ist und als erforderliches Feld markiert wird.
Am einfachsten validierest du eine Email mit hilfe eines Regex, siehe https://stackoverflow.com/questions/46155/how-can-i-validate-an-email-address-in-javascript
alternativ kannst du das Feld auch einfach zu einem type email machen und ein required hinzufügen, dann brauchst du nicht mit JS validieren
Schau dir mal indexOf an
Wenn du in einer Form bist, sollte type="email" das Absenden von einer invaliden Mail Adresse (invalide im Sinne des dahinter liegenden regulären Ausdruckes) eigentlich verhindern.
Falls das aus irgendeinem Grund nicht geht, email.indexOf("@") !== -1 , wie FaTech bereits schrieb.
Danke für deine Hilfe :)
requiered ist schon hinzugefügt. Also es validiert schon automatisch.
Nur wenn ich dann auf den button einloggen clicke startet ja mein Event.
Folgendes:
Function Einloggen {
Let Login =
document.getElementById('Anmelden').value;
Let Password = document.getElemenById('Password').value;
Nun das Event:
If(Login && Password.value.length){
document.getElementById('id').style.display = 'none';
}
}
Nun wenn ich auf den Button Einloggen drücke, wirs das Event allerdings schon ausgelöst wenn ich beispielsweise nur ein zeichen bei password und email eingebe, was nicht sein sollte. Sondern es sollte erst passieren wenn das inputfield besipielsweise a@a hat. Requiered sagt zwar bitte geben sie eine gültige Email an aber das Event wird trotzdem auagelöst 😅