HTML Input 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.

Woher ich das weiß:Berufserfahrung – mit dem Internet verbunden seit 1993

WebcodeYT 
Beitragsersteller
 13.01.2021, 20:02

Gute Idee danke...

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).


WebcodeYT 
Beitragsersteller
 13.01.2021, 20:58

Oh mein Gott danke!Vor allem das du das ganze auch noch gecodet hast!

regex9  13.01.2021, 20:13

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.ä..