event.originalEvent undefiniert im Fokus-Veranstaltung mit jQuery autocomplete
Muss ich überschreiben Sie die AutoVervollständigen-focus-Ereignis mit einer benutzerdefinierten Aktion und etwas tun, basierend auf, ob der Benutzer wurde aus der Liste auswählen mit der Tastatur und nicht die Maus. Zu tun, dass ich bin der überprüfung der originalEvent.geben Sie in das event-Objekt, das enthalten soll, die Art der Aktion (keydown, keyup, mouseenter, etc).
Jedoch die originalEvent Objekt zu sein scheint, nicht definiert, und ich kann nicht verstehen, warum. Es arbeitet gerade fein in der aktuellen focus-Ereignis in der AutoVervollständigen-code, aber nicht, wenn ich überschreiben, dass ein Ereignis in der autocomplete-Objekt.
Bitte siehe meinen code unten. Ich würde schätzen jede Hilfe, da es treibt mich Bananen.
$( "#tags" ).autocomplete({
source: availableTags,
focus: function(event, ui) {
//Check whether focus was triggered by a mouse or keyboard event
if ( /^key/.test(event.originalEvent.type) ) {
//Do something here
}
return false;
}
});
- Wo ist
event
definiert? Vielleicht müssen Sie es als ein argument fürfocus: function(event)
? - Mein Fehler, die Funktion, die Signatur ist eigentlich
focus: function(event, ui)
. So ein "Ereignis" ist in der Tat als parameter übergeben - Können Sie eine
alert
oderconsole.log
fürevent.originalEvent.type
- Ich habe es versucht. Es kommt als nicht definiert. Wenn ich eine Konsole.melden Sie sich auf das event-Objekt selbst, das originalEvent gar nicht da, das ist der Kern des Problems.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war tatsächlich in der Lage zu bekommen, um
originalEvent
, aber ich glaube nicht, dass es hilft Ihnen auch, wenn Sie können es abrufen, schauen Sie auf der Konsole in dem folgenden Beispiel: http://jsfiddle.net/andrewwhitaker/DkumP/1/Werden Sie feststellen, dass die
type
vonoriginalEvent
istmenufocus
, was ich nicht glaube, ist, was Sie erwartet hatten.Einen möglichen Weg zu erreichen, was Sie zu tun versuchen ist zu prüfen
event.which
, und sehen Sie, wenn Sie den Pfeil nach oben oder Pfeil nach unten (vorausgesetzt, diese sind die einzigen Tasten, die Sie verwenden können, in der autocomplete-widget):Hier ein Beispiel: http://jsfiddle.net/andrewwhitaker/DkumP/2/
Danke für die Anregung, Andreas.
Ich vergaß zu erwähnen, dass ich mithilfe von jQuery-UI-1.8.5, also die überprüfung der "welche" Eigenschaft nicht Arbeit für mich, denn es war undefiniert, wie gut. Upgrade auf 1.8.10 geholfen, tho und es begann zu arbeiten. Anscheinend ist diese ganze Sache war ein Fehler in 1.8.5, die später korrigiert wurde, auf.
So, in Fall, jemand kämpft mit einem ähnlichen Problem - ein upgrade auf die neueste version, das sollte es beheben.