IE: Change Event und Autocompletion

Im IE (7) gibt es Probleme mit dem Change-Event bei einem Input-Feld, wenn dies auch Autocompletion von script.aculo.us[1] beinhaltet.

Wird ein Input-Feld bezüglich den Veränderungen beobachtet ($('field').observe('change', ...')) wird beim IE dieser Event dann gefeuert, wenn der Focus das Feld verlässt.

Hat das Input-Feld nun auch Autocompletion, wird dieser Event nicht mehr gefeuert, wenn, der Nutzer mit Tab oder Enter ein Eintrag aus der Autocompletion-Liste auswählt.

Hier muss man den Event selbst feuern, wenn der Eintrag aus der Autocompletion-Liste ausgewählt wurde. Da man bei Prototype keine native Events abfeuern kann, nutzt man die eigenen Events [2] nutzen.

[Read More]

Prototype each(), IE und null

Bei der Arbeit mit JavaScript kommt man irgendwann in die Situation durch ein Array zu iterieren. Dabei nutzt man nicht immer einfach indizierte Arrays, sondern oft auch Arrays mit Lücken in den Indizes oder sogar assoziative Arrays. Diese letzten Varianten kann man eigentlich genauso durchlaufen, wie die erste, wenn da nicht der IE wäre. Der IE hat Probleme mit Lücken in Arrays. Wie man im folgenden Listing sehen kann, gibt es beim Firefox fast die erwartbaren Ergebnisse. Nur fast. Denn beim ersten Output stimmen die Indizes nicht. Das gleiche Problem hat man jedoch auch beim IE. [lang=js] var ar1 = new Array(); ar1[2] = ‘A’; ar1[13] = ‘B’; ar1[23] = ‘C’; var out = ‘’; ar1 = ar1.compact(); ar1.each(function(item, index) { out += index + ‘: ’ + item + ‘, ‘; }); // => out = 0: A, 1: B, 2: C, out = ‘’; for(i in ar1) { if( (typeof ar1[i]) != ‘function’ ) out += i + ‘: ’ + ar1[i] + ‘, ‘; } // => out = 2: A, 13: B, 23: C, var ar2 = { a: ‘Part_1’, b: ‘Part_2’, sum: ‘Part_1_2’ }; out = ‘’; for(a in ar2) { out += a + ‘: ’ + ar2[a] + ‘, ‘; } // => out = a: Part_1, b: Part_2, sum: Part_1_2, [/lang]

[Read More]