Gibt es Ereignisse für die Reset-Option für die Eingabesuche?
Lesezeit: 4 Minuten
Boris Guéry
In HTML5 gibt es einen neuen Eingabetyp, „Suche“. Bei den meisten Browsern bleibt es bei einer einfachen „Text“-Eingabe, aber bei Webkit-basierten Browsern fügt es ein kleines Kreuz hinzu, um die Eingabe zurückzusetzen.
Ich möchte damit umgehen können, gibt es dafür eine Veranstaltung?
Weitere Antworten finden Sie hier stackoverflow.com/questions/2977023/…
Es gibt auch einige benutzerdefinierte Ereignisse – wie „Suche“, die ausgelöst werden, wenn der Benutzer die Eingabe unterbricht (setzen Sie „Incremental“ auf „true“).
Beim Testen habe ich festgestellt, dass dieses „Such“-Ereignis auch aufgerufen wird, wenn die Eingabe gelöscht wird (zumindest in der neuesten Version von Safari).
Beim Klicken auf das „x“ in MS Edge wird nur das „input“-Event ausgelöst.
– Mottie
15. Januar 2016 um 3:56 Uhr
n0nick
Miketaylr scheint Recht zu haben, es ist nicht möglich, dieses Ereignis abzufangen. Sehen Sie sich die Antwort auf diese Frage an: Wie erkennen Sie das Löschen einer „Suche“-HTML5-Eingabe?
Um standardkonform zu sein und sich nicht auf eine Funktion einer Layout-Engine zu verlassen, schlage ich vor, dass Sie Ihren Code auf einem ausführen onChange Ereignis, wenn der neue Textwert leer ist.
Das Änderungsereignis wird nur ausgelöst, nachdem die Texteingabe den Fokus verloren hat: Wenn Sie etwas inkrementell aktualisieren, erwartet der Benutzer, dass es sofort nach dem Klicken auf die X-Schaltfläche aktualisiert wird, anstatt zu warten, bis der Fokus verloren geht.
– Jonathan Morgan
6. September 2013 um 1:18 Uhr
Nein, es ist nicht möglich. Diese UI-Interaktion ist etwas Gutes, das Webkit implementiert, aber nicht wirklich spezifiziert ist. Sehen hier. Also, selbst wenn es möglich wäre – Sie können nicht erwarten, dass diese Benutzeroberfläche beispielsweise in Gecko implementiert wird, falls und wenn sie jemals type=search hinzufügen.
Dies wäre kein Problem, ich meine mit der Feature-Erkennung, es wird nur eine nette Möglichkeit hinzufügen, eine Eingabe zurückzusetzen und einige Dinge bei einem Ereignis zu versenden.
– Boris Guéry
22. März 2010 um 15:18 Uhr
Sicher. Abgesehen davon, dass es keine zu erkennende Funktion gibt – es sei denn, Sie führen ein Browser-Sniffing für Webkit zusätzlich zur Funktionserkennung von type=search durch. Denken Sie jedoch daran, dass es für die von Ihnen beschriebene Funktion kein Ereignis gibt, daher ist dies ein strittiger Punkt.
– miketaylr
22. März 2010 um 15:55 Uhr
Sie können auch auf das “input”-Ereignis lauschen, das ist allgemeiner als das “search”-Ereignis, fängt aber immer noch die Reset-Option ab.
Ich weiß nicht, dass dies der ist Korrekt Antwort, aber die click Der Ereignishandler wird aufgerufen, wenn der Benutzer die Eingabe mit der X-Schaltfläche löscht.
$('input[type="search"]').click(function(event) {
// This code runs anytime a user clicks on the input,
// including when they clear it using the X button.
})
Das Problem ist, dass wir nicht wissen können, ob der Benutzer tatsächlich auf das Kreuz klickt, um seine Eingabe zu bereinigen oder zu bearbeiten.
– Boris Guéry
1. August 2010 um 20:07 Uhr
Ich stimme Boris zu. Beachten Sie außerdem: IE 10 scheint kein “Klick”-Ereignis auszulösen, wenn auf die neue X-Schaltfläche geklickt wird – nur Mousedown und Mouseup. Auch nachdem mouseup ausgelöst wurde, wurde der Wert immer noch nicht auf leer geändert.
– Jonathan Morgan
6. September 2013 um 1:14 Uhr
Gemeinschaft
Bin mir nicht sicher, ob noch jemand nach einer Lösung sucht. Das folgende Code-Snippet/Tricks funktionierte jedoch für mich. CSS zum vollständigen Ausblenden der Löschen (X)-Symbol und wenn du das nicht verstecken willst Löschen (X)-Symbol aber müssen Sie dann JS-Code-Snippet handhaben, würde helfen.
CSS-Trick:
#textFieldId::-ms-clear {display: none;} — Für ein bestimmtes Textfeld
oder
input[type=text]::-ms-clear { display: none; } — für alle Textfelder im Geltungsbereich
ODER
JavaScript-Trick (um den Textfeldwert auf leer/leer zurückzusetzen und das HTML-Ereignis KeyUp auszulösen. Dementsprechend können Sie es nach Bedarf ändern)
$('#textFieldId').bind("mouseup", function() {
var $input = $(this);
var oldValue = $input.val();
if (oldValue == "") {
return;
}
setTimeout(function() {
var newValue = $input.val();
if (newValue == "") {
$input.trigger("keyup");
}
}, 1);
});
Das Problem ist, dass wir nicht wissen können, ob der Benutzer tatsächlich auf das Kreuz klickt, um seine Eingabe zu bereinigen oder zu bearbeiten.
– Boris Guéry
1. August 2010 um 20:07 Uhr
Ich stimme Boris zu. Beachten Sie außerdem: IE 10 scheint kein “Klick”-Ereignis auszulösen, wenn auf die neue X-Schaltfläche geklickt wird – nur Mousedown und Mouseup. Auch nachdem mouseup ausgelöst wurde, wurde der Wert immer noch nicht auf leer geändert.
– Jonathan Morgan
6. September 2013 um 1:14 Uhr
Radosław Dziegielewski
Sie könnten eine Bedingung hinzufügen, um zu prüfen, ob der Inhalt des Suchfelds leer ist, aber das ist alles nicht gut, selbst mit einer Zeitüberschreitung, da es zuerst den Code ausführt und dann das Feld löscht. Das andere Problem ist, dass der Code nicht auf die Schließen-Schaltfläche reagiert, wenn Sie das Feld bearbeiten
10960100cookie-checkGibt es Ereignisse für die Reset-Option für die Eingabesuche?yes
Weitere Antworten finden Sie hier stackoverflow.com/questions/2977023/…
– dlso
27. Januar 2016 um 20:56 Uhr