Frage

Der Prototyp -Ereignishörer, den ich für Änderungen in ausgewählten Menüs verwende, wird in IE nicht ausgelöst.

Event.observe('use_billing', 'change', Checkout.getBillingData);

Das funktioniert in Firefox (natürlich) gut, aber im IE (natürlich) passiert nichts - ich habe das schon seit einiger Zeit gegoogelt, aber ich habe keine geeignete Lösung für dieses Problem gefunden. Ich habe gelesen, dass es Probleme gibt, aber ich fand nichts Nützliches, um das Problem zu umgehen und dies zum Laufen zu bringen.

Ich versuche wirklich, Inline -Ereignisauslöser zu vermeiden, weil sie aufdringlich sind und ein unordentliches Dokument für Fehler neigen:

<select id='use_billing' onchange="Checkout.getBillingData();">....</select>

Alle Ideen wären großartig - dies ist das einzige, was dieses Projekt daran hindert, von der Beta zur Produktion zu wechseln.

War es hilfreich?

Lösung 2

Ich fand den Grund - es war nicht das Fokus -Problem, es stellte sich heraus, dass ich den Namen und die ID -Werte des Formularelements gleich hatte - ich habe den ID -Wert geändert und alles hat gut funktioniert.

Andere Tipps

Dies ist ein häufiges Problem mit IE. Es feuert nicht change Ereignisse, bis das Element den Fokus verliert.

Um zu überprüfen, ob dies tatsächlich die Ursache Ihres Problems ist, ändern Sie das Menü und drücken Sie dann die Registerkarte, um Ihren Fokus auf ein anderes Element zu verschieben. Wenn Ihr Rückruf ordnungsgemäß abfeuert, wissen Sie, dass es kein anderes Problem gibt.

Ich habe dieses Problem zuvor umgearbeitet, indem ich auch auf andere Ereignisse wie zugehört habe click oder keydown. Sie können Ihrem Rückruf einen Scheck hinzufügen, um sicherzustellen, dass sich der Wert tatsächlich von zuvor unterscheidet, um sicherzustellen, dass Sie das Ereignis nicht öfter als notwendig verarbeiten click und change Gleichzeitig, wenn sie auf einen neuen Wert klicken).

Ich weiß, dass dies ein altes Thema ist, aber ich wollte eine alternative Antwort auf die oben genannte teilen. In meinem Code waren der Name und die ID des Elements gleich, aber das war egal.

In der Funktion, die abgefeuert wird, wurde das Ereignisargument aus dem Prototyp übergeben. Um den Wert des Textfelds (das das Ereignis erhöht) in Firefox zu erhalten, die Sie verwenden eventArg.currentTarget.value

Aber im IE musst du benutzen eventArg.srcElement.value

Damit es in beiden Browsern funktioniert, müssen Sie ...

var value = "";
var id = "";
if(eventArg.currentTarget){//FireFox
value = eventArg.currentTarget.value;
id = eventArg.currentTarget.id;
}
else{//IE
value = eventArg.srcElement.value;
id = eventArg.srcElement.id;
}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top