Hi!
Ich habe folgendes Problem:
Ich habe ein Formular, welches mehrere Texteingabefelder beinhaltet.
Bei einem der Eingabefelder wird eine Liste an Auswahlmöglichkeiten angezeigt, sobald ich drei Buchstaben eingegeben habe. Die Inhalte der Auswahlliste werden per Ajax erzeugt, das Navigieren durch diese Liste erfolgt über ein Javascript-Funktion ("NavigationDurchAuswahlliste"), welches Mausposition, Mausklick bzw. das Keyboard nach gedrückten Tasten abfragt.
Diese Function rufe ich im Ajax-Script so auf
if (http_request.readyState == 4) {
if (http_request.status == 200) {
eval(NavigationDurchAuswahlliste);
}
}
Das funktioniert alles auch bestens. Ich kann problemlos durch die Auswahlliste navigieren; das Keyboard wird in der Function "NavigationDurchAuswahlliste" wird mit document.onKeyDown
abgefragt.
Nun habe ich aber festgestellt, dass das onKeyDown
und damit sozusagen die Function "NavigationDurchAuswahlliste" auch dann anspringt/ aufgerufen wird, wenn der Focus in einem anderen Formularfeld ist, als in dem, wo das Ajaxscript aufgerufen wird.
Es ist mir klar, dass document.onKeyDown
jeglichen Tastenanschlag abfragt, der irgendwo im Document vorgenommen wird. Aber an sich dürfte doch der Befehl gar nicht ausgeführt werden, da die Function, die diesen Befehl beinhaltet, ja überhaupt nicht aufgerufen wird.
Und das ist das, was ich nicht verstehe. Warum passiert das? Ich sehe mit Firebug, dass der eigentliche Ajaxrequest zum Server nicht passiert, wenn ich in den anderen Eingabefeldern etwas eingebe. Schon von daher dürfte doch auch obiger eval-Code (eval(NavigationDurchAuswahlliste)
) nicht ausgeführt werden und schon gar nicht, oder?
Oder behält Firefox ein Skript immer im Speicher, wenn es per Ajax initiiert wurde?
Hat jemand eine Idee? Danke.