Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Eingabefeld wird nicht geleert

1 view
Skip to first unread message

Jan Novak

unread,
Apr 12, 2023, 7:50:23 AM4/12/23
to
Hallo,


ich habe in einer Form ein Eingabefeld, welches per JS eine ganze Reihe
an autocomplete Inhalte hinzugefügt bekommen hat.

Es gibt einen Event, welcher nach drücken von ENTER das ausgewählte Text
Element übernimmt. Danach möchte ich das Input Element wieder "leer"
haben, was ich mit

document.getElementById("SEARCH_TAGS").value = "";

mache. Aber das Element bleibt mit dem letzten Text aus dem autocomplete
stehen. Zwei Dinge hierzu:

1. Die value Eigenschaft des Elements ist nach obigem Befehl tatsächlich
"" (also leer) aber im Input steht dennoch der letzte Eintrag.
2. Bei einem Texteintrag, welcher *nicht* im autocomplete stand, wird
dieser nach dem Enter drücken geleert.


addTag(){
var taginput=document.getElementById("SEARCH_TAGS").value;
if(event.key === 'Enter' && taginput != "") {
// tue etwas mit dem Tag

//das hier geht nur, wenn taginput nicht in der autocomplete Liste
stand
document.getElementById("SEARCH_TAGS").value = "";
}

}



Jan

Jan Novak

unread,
Apr 12, 2023, 8:48:50 AM4/12/23
to
Am 12.04.23 um 14:40 schrieb Stefan Ram:
> Jan Novak <rep...@gmail.com> writes:
>> Aber das Element bleibt mit dem letzten Text aus dem autocomplete
>> stehen.
>
> Es gibt gerade in 'comp.infosystems.www.authoring.html' eine
> Diskussion 'Stopping "helpful" auto-fill suggestions' mit einem
> verwandten Thema, wo unter anderem die Zuweisung 'autocomplete="off"'
> für Attribute des Eingabe- oder Formular-Elements erwähnt wurde, um
> autocomplete-Effekte zu verhindern. Ich habe jetzt aber nicht weiter
> recherchiert, ob dies in Deinem Fall hilfreich wäre.

Mit diesem Attribut habe ich auch herumprobiert - ohne Erfolg.


Jan

Stefan Reuther

unread,
Apr 12, 2023, 1:05:54 PM4/12/23
to
Am 12.04.2023 um 13:50 schrieb Jan Novak:
> ich habe in einer Form ein Eingabefeld, welches per JS eine ganze Reihe
> an autocomplete Inhalte hinzugefügt bekommen hat.
[...]
> mache. Aber das Element bleibt mit dem letzten Text aus dem autocomplete
> stehen. Zwei Dinge hierzu:

Ich würde den Fehler im Autocomplete-Code suchen, den du nicht gezeigt
hast. Unten eine Variation deines Codes, die bei mir tut wie gewünscht.

Spontane Vermutung: das Autocomplete-Element hat weiterhin den Fokus,
bekommt den 'Enter'-Tastendruck, und löst damit das Autocomplete einfach
erneut aus. Ich seh zumindest in deiner addTag-Funktion nichts, das das
Weiterpropagieren des Events stoppen würde.

Zum Debuggen sind ansonsten die alten Methoden einfach noch die besten:
alle Eventhandler verprinten (console.log) und dann siehst du in der
Konsole, was in welcher Reihenfolge kommt.


Stefan



<html>
<body>
<input id="SEARCH_TAGS" />
<button id="WHAT">Set</button>
<ul id="TAG_LIST">
</ul>
</body>
<script>
document.addEventListener('keydown', function addTag() {
var taginput=document.getElementById("SEARCH_TAGS").value;
if(event.key === 'Enter' && taginput != "") {
// tue etwas mit dem Tag
var e = document.createElement("LI");
e.appendChild(document.createTextNode(taginput));
document.getElementById("TAG_LIST").appendChild(e);

document.getElementById("SEARCH_TAGS").value = "";
}
});
document.getElementById("WHAT").addEventListener('click', function() {
var e = document.getElementById("SEARCH_TAGS");
e.value = "what";
e.focus();
});
</script>
</html>

Jan Novak

unread,
Apr 17, 2023, 9:34:21 AM4/17/23
to
Am 12.04.23 um 18:55 schrieb Stefan Reuther:
> Am 12.04.2023 um 13:50 schrieb Jan Novak:
>> ich habe in einer Form ein Eingabefeld, welches per JS eine ganze Reihe
>> an autocomplete Inhalte hinzugefügt bekommen hat.
> [...]
>> mache. Aber das Element bleibt mit dem letzten Text aus dem autocomplete
>> stehen. Zwei Dinge hierzu:
>
> Ich würde den Fehler im Autocomplete-Code suchen, den du nicht gezeigt
> hast. Unten eine Variation deines Codes, die bei mir tut wie gewünscht.
>
> Spontane Vermutung: das Autocomplete-Element hat weiterhin den Fokus,
> bekommt den 'Enter'-Tastendruck, und löst damit das Autocomplete einfach
> erneut aus. Ich seh zumindest in deiner addTag-Funktion nichts, das das
> Weiterpropagieren des Events stoppen würde.
>
> Zum Debuggen sind ansonsten die alten Methoden einfach noch die besten:
> alle Eventhandler verprinten (console.log) und dann siehst du in der
> Konsole, was in welcher Reihenfolge kommt.

Der Fehler lag am falschen Event. Ich hatte den onKeyDown ge'triggert.
Mit einem onKeyUp funktioniert es wie gewünscht.


Jan
0 new messages