Lieber Klaus,
Aber wie kann ich herausfinden welches Feld gerade den focus hat?
meines Wissens gibt es keine allgemein unterstützte JavaScript-Eigenschaft (z.B. document.focussedNode oder ähnliches), die Du in allen Browsern abfragen könntest. Daher müsste man sich soetwas selbst bauen (wenn man keine Bibliothek verwendet, die das bereits mitbringt).
Idee: Definiere Dir eine neue Eigenschaft für Dein document-Objekt. Wenn Du diese Eigenschaft nicht explizit anlegst, musst Du eventuell immer erst prüfen, ob sie überhaupt existiert.
document.focussedNode = null;
Jedes Deiner Formular-Elemente belegst Du mit einem onfocus-Event, welches nichts anderes tut, als sich selbst (also eine Referenz auf das gerade fokussierte Element) in obige document-Eigenschaft einzutragen, und ein onblur-Event, welches dafür sorgt, dass das Element wieder ausgetragen wird.
function initialisiereFormularElemente (formular) {
var i;
for (i = 0; i < formular.elements.length; i++) {
// onfocus-Event
formular.elements[i].onfocus = function () {
// "this" enthält eine Referenz auf das Element, welches das Event auslöst:
document.focussedNode = this;
};
// onblur-Event
formular.elements[i].onblur = function () {
if ( // Eigenschaft überhaupt definiert?
document.focussedNode
// Steht das Element noch in document.focussedNode?
&& document.focussedNode == this
) {
// ja -> entfernen
document.focussedNode = null;
}
};
}
}
Obige Funktion kannst Du erst dann ausführen lassen, wenn das Dokument vollständig geladen wurde, da Du sonst nicht alle Elemente erreichst, oder gar das Formular zum Zeitpunkt des Funktionsaufrufs noch nicht existiert. Näheres dazu hier: Autostart eines JavaScripts.
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)