HTML Input verdecken?
Hallo! Ich habe in HTML einen Input von Typ Text. Man sieht den Text, aber ich möchte, das man ihn angezeigt bekommt, als wäre es ein Passwort. Also mit *****.Ich kann aufgrund meines Javascript Codes ihn aber nicht als Typ Password(also <Input type="Password"> geht nicht) abspeichern. Kann ich den Text trotzdem irgendwie verdecken?
2 Antworten
Geht, ist aber schwierig und für den Nutzer ggfs. irreführend: leg per CSS ein Element über das Eingabefeld und simuliere in diesem die Eingabe per JavaScript während der Nutzer im Hintergrund die eigentliche Eingabe im Feld vornimmt.
Du kannst das Element mit einem anderen Element verdecken.
Beispiel (ein Eingabefeld überlagert das Eingabefeld für die Eingabe):
<div class="container">
<input class="front">
<input>
</div>
CSS:
.container {
position: relative;
}
.front {
left: 0;
pointer-events: none;
position: absolute;
top: 0;
}
Zusätzlich könntest du noch das beschreibbare Eingabefeld mit einem Listener für das input-Event ausstatten. Der Handler schreibt dann bei jedem Aufruf ein Zeichen in das Feld (mit Orientierung an der Länge des tatsächlichen Eingabefelds).
Oh mein Gott danke!Vor allem das du das ganze auch noch gecodet hast!
Zu Letzterem ein JavaScript-Nachtrag:
const frontField = document.getElementById("frontField");
document.getElementById("backField").addEventListener("input", function() {
if (this.value.length > frontField.value.length) {
frontField.value += "*";
}
else if (this.value.length < frontField.value.length) {
frontField.value = frontField.value.substring(0, frontField.value.length - 1);
}
});
Die IDs backField und frontField müssten natürlich noch entsprechend verteilt werden.
Außerdem fehlt noch irgendeine visuelle Anzeige für den Nutzer, dass er das Eingabefeld gerade selektiert hat. Vielleicht setzt man einen dickeren Rahmen für das Feld bei Klick, o.ä..