Warum nicht? Ich glaube, mir fehlt ein Grundgedanke.
Ja, irgendwie ist da nicht viel von jQuery zu sehen :)
Du benötigst idR. einen Selektor - wie in CSS - der in der jQuery-Funktion aufgerufen wird
... langsam steig ich dahinter, wie das ganze zu verstehen ist!
Ich vermute, der Verständnisfehler, der hinter meinem Versuch:
formObj.elements[e].focus(function(){lA[this.name].className = "";})
... steckt, ist dass ich versucht habe, ein JQ-Methode auf ein
DOM-Objekt anzuwenden. Dass das hier funktioniert, habe ich
herausgefunden:
$(':input').focus(function(){lA[this.name].className = "";});
Damit wird der für die Inputs ursprünglich mal definierte
onfocus-Event nicht mal überschrieben. Diesem kleinen
Erfolgserlebnis folgt aber leider eine möglicherweise
schwerwiegende Erkenntnis.
Nochmal zurück zur Ausganssituation:
var eA =[];
function init_form ()
{//alert("init_form()");
formObj = document.forms['adminForm'];
for (e=0; e<formObj.elements.length; e++)
{
if(formObj.elements[e].type!="hidden") eA[formObj.elements[e].name] = formObj.elements[e];
formObj.elements[e].onfocus = function (){lA[this.name].className = "";}
}
...
}
...
Hieran probiere ich also, ob ich mit JQuery meinen Code sauberer
und übersichtlicher hinbekomme. Und das hier:
$(':input').focus(function(){lA[this.name].className = "";});
... funktionierte ja auch schon sehr gut. Mein Versuch, die erste
Anweisung im Schleifenblock zu erstzen:
$(':input:not(:hidden)').each(function(){eA[this.name]=this;});
... scheitert aber. Der Selektor scheint korrekt zu sein. Aber
mein Umgang mit oder vielmehr mein Verständnis für globale
Variablen scheint mir hier in die jQuere zu kommen. Ich weiss,
globale Variablen sind evil aber ich weiss garnicht so genau
warum und wie ich das anders machen soll ;(
Meine Logik (verkürzt):
1. in init_form() fülle ich das global defnierte Array 'eA' mit
allen Form.elements die nicht vom Typ hidden sind.
2. das ich an verschiednenen Stellen in anderen Funktionen
beeinflusse und greife u.U. auf die Elemente zu
(z.B. eA['title'].disabled=true)
3. in check_form() verwende ich das u.U. veränderte globale 'eA'
um Inhalte vor dem Abschicken auf Richtigkeit zu prüfen.
Jetzt frage ich mich, ob es grundsätzlich ein Fehler ist,
das Array 'eA' zu definieren um mit mehreren Funktioneen
darauf zuzugreifen, weil global evil ist, oder ich nur
wissen muss, wie ich hier:
$(':input:not(:hidden)').each(function(){eA[this.name]=this;});
... dafür sorge, dass jQuery weiss, dass ich das global definierte
Array 'eA' füllen möchte.
vielen dank für Tipps uns
beste gruesse,
heinetz