Autocomplete in HTML-Formularen nur teilweise unterdrücken (ungelöst)

Autocomplete ist ja eine gute Sache, wird aber ärgerlich, wenn man Formulare zu editieren hat, die bereits einen Inhalt aufweisen und das besagte Feld schon viele ähnliche Einträge hatte. Zudem passiert in diesem Fall der ungute Umstand, dass man beim Editieren gezielt  in das Feld an der zu änderten Stelle klickt, der Text-Cursor aber ans Ende springt wenn man auch nur knapp mit der Maus aus dem Formularfeld rutscht. Wenn man nicht aufpasst, schreibt man nicht im Text, sondern am Ende weiter.

Auch ein Doppelklick hilft nicht. Man muss erst das Autocomplete so “deaktivieren”, dass es nichts mehr findet. Sobald nämlich am Ende der Zeile etwas neues Neues steht, kann man auch innerhalb der Zeichenkette editieren. Generell <input autocomplete="off"> setzen ist auch nicht erwünscht, denn oft genug will man ja diese praktische Funktion nutzen.

Unglücklicher Versuch mit zusätzlichen Leerzeichen

Eine erste Variante fand ich, indem ich per JavaScript ein Leerzeichen nach dem Laden des Dokuments an den Text im Formularfeld hänge. So erfolgt das “Deaktivieren”. Das oder die Leerzeichen werden vom Server-Skript ohnehin der überschüssigen Leerzeichen beraubt. Die if-Anweisung habe ich, weil mein Formular nicht immer besagtes Feld aufweist und ich nicht im Server-Script differenzieren wollte.

<script type="text/javascript">
  function myOverrideAutoComplete(myInput){
    if (typeof(myInput) != 'undefined' && myInput!= null){
      document.getElementById(myInput).value += " ";
    }
  }
</script>
<body onload="myOverrideAutoComplete('myInputItem')">

Serverseitig arbeitet bei mir ein Perl-Script, hier werden vor dem Speichern Leerzeichen und Umbrüche aller Felder gelöscht:

$passed{$key} =~ s/^\s+|\s+$//g;

Unter PHP würde das trim() machen:

$passed[$key]= trim($passed[$key]);

Ernüchterung nach ein paar Einsätzen

Es ist noch optimal, weil auch Zeichenketten vom Stil Text+Blank in die Autocomplete-Vorschläge gelangen und dieses dann wie zuvor ungut aktivieren. Mögliche Lösungen:

  • Den initialen Gedanken weiterführen und per JavaScript das Autocomplete weiter austricksen?
  • Ein einfaches On/Off am autocomplete-Attribut mittels Button daneben?
  • Zeitversetztes das Autocomplete deactiveren (onmouseout)?
  • Nack Klick in das Formularfeld den Cursor zwingen darin zu bleiben (mit Buffer rundherum)?

No Comments

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.