Cryver Geschrieben 23. Oktober 2009 Geschrieben 23. Oktober 2009 Guten Morgen miteinander, ich habe folgendes Problem: Ich habe eine Seite programmiert, die soweit einwandfrei funktioniert- sollte man meinen Im FireFox, Opera und Co funktioniert alles einwandfrei. Nur, wie soll es auch anders sein, im Internet Explorer funktionieren 2 Dinge nicht. Nachdem ich schon mit meinem Ausbilder geguckt habe, und selber seit Montag am tüfteln bin, wollte ich jetzt einfach mal hier fragen- ich komme absolut nicht mehr weiter. Wir nutzen PhP Version 5.2.5. Da es ein Betriebsinternes Tool wird, auch noch den Standard hier: Internet Explorer 6 (damit teste ich auch) Die 2 Probleme: 1.) Ich habe eine kleine JavaScript Funktion geschrieben, um bei einem Klick auf eine Checkbox ein Feld an zuzeigen, bzw. zu verstecken. Aufgerufen wird diese Funktion bei „onChange“. Im Internet Explorer ist das aber so: Ich klicke auf die checkbox… Nichts passiert. Ich klicke irgendwo anders hin, auf der Seite selbst natürlich, und die JavaScript Funktion wird ausgeführt. Zugegeben, ich kenne mich mit JavaScript nicht so gut aus. Liegt das am Event Handler, oder worauf muss ich genau achten? Oder darf man einfach keine Checkbox nehmen? Das kam so vom „Auftraggeber“, dass ich es machen muss- gibt es hierbei einen anderen/ besonderen/ bestimmten Event Handler, damit es funktioniert? Die Teile (ich will nicht das „ganze“ script zeigen, weil das einfach zu lang wäre) sehen so aus: Es ist von der Position her auch so im Script zu finden, versteht sich (sprich, die Funktion ist definitiv vorhanden- ansonsten würde FireFox das ja auch falsch machen). <script language="javascript"> function changing() { for(var i = 0; i<=1;i++) if(document.erschaffen.stat.checked == false) { document.getElementById('dauer').style.display='none'; } if(document.erschaffen.stat.checked == true) { document.getElementById('dauer').style.display='block'; } } </script> <input type="checkbox" name="stat" value="Administrator" onChange="changing()" tabindex="6"> Administrator <div id="dauer" style="display: none;"> <input type="text" value="LDAP Name" tabindex="7" readonly> <input type="text" name="kuerzel" value="" tabindex="8"> <br><br> </div> 2.) Wenn ich mich zum Beispiel auf meiner Seite einlogge und dann auf den submit Button klicke wird dieser noch mit „verarbeitet“. Wenn ich allerdings mit Enter abschicke, dann „bemerkt“ die Seite den submit Button scheinbar gar nicht, und schickt das ganze dann, ohne den submit button ab. Da die Funktionen fast alle darauf aufbauen, dass eben ein submit button (bzw. ein bestimmter- halt von Funktion zu Funktion unterschiedlich) existent ist/ benutzt wurde (also isset() ), wird dann natürlich nichts ausgeführt. Komischerweise ist das nur bei einem einzigen Button so. Irritierend an der Sache ist, dass alles wie immer ist. Mein Ausbilder findet soweit auch keinen Fehler und die anderen Kollegen hier finden ebenfalls keinen Fehler, und können sich das nicht erklären (vorallem, weil es ja an anderen Stellen klappt). Ich freue mich über jede Hilfe und eine eventuelle Erklärung dazu (damit ich auch erklären kann, warum etwas so klappt und nicht so. Kommt ja immer gut ). Vielen dank für jede Hilfe. Mit freundlichen Grüßen, Cryver P.S.: Hoffe, es ist soweit alles verständlich, und es besteht kein Fehler. Zitieren
Lucius Geschrieben 23. Oktober 2009 Geschrieben 23. Oktober 2009 (bearbeitet) Also zu deinem ersten Problem: Der ie behandelt ein onChange bei Checkboxen wie ein blur. Deshalb reagiert es erst wenn du woanders hin klickst. Evtl. funktioniert onClick besser. Sollte zumindest den selben Effekt haben wie onChange bei einer Checkbox ;P Zu deinem zweiten Problem: Was für einen Button nutzt du denn? Ein input type='submit' oder ein input type='button'? Oder nur einen Link der als Button fungiert? Je nach dem kannst du das enter drücken(onSubmit) abfangen und den button per JS selber 'betätiegen'. Bearbeitet 23. Oktober 2009 von Lucius Zitieren
Reinhold Geschrieben 23. Oktober 2009 Geschrieben 23. Oktober 2009 Moin, habe das eben mal mit einem FF 3.0.14 und einem IE 8.0 probiert. IE 6 habe ich nicht mehr, aber das von dir beschriebene Phänomen tritt auch in Version 8 auf. Es liegt offenbar daran, dass der IE den Event onChange erst beim verlassen des Felds auslöst. Da es eine Checkbox ist, kannst du aber ebenso gut onClick benutzen, das geht in beiden Browsern. hth Reinhold PS: *aaaargh* da war einer schneller Zitieren
Cryver Geschrieben 23. Oktober 2009 Autor Geschrieben 23. Oktober 2009 (bearbeitet) Danke Lucius, Reinhold, hat prima geklappt edit: (...) Zu deinem zweiten Problem: Was für einen Button nutzt du denn? Ein input type='submit' oder ein input type='button'? Oder nur einen Link der als Button fungiert? Je nach dem kannst du das enter drücken(onSubmit) abfangen und den button per JS selber 'betätiegen'. Also, es ist ein input type="submit", aye (ich hab immer nur die Bezeichnung "submit-Button" gehört, gibt es eine andere/ korrektere?). Ich schau mir aufjedenfall mal "onSubmit" an. Vielleicht klappt das ja so. Bearbeitet 23. Oktober 2009 von Cryver Zitieren
Lucius Geschrieben 23. Oktober 2009 Geschrieben 23. Oktober 2009 (bearbeitet) Die Bezeichnung Submit Button ist ja auch richtig, nur lieber nachfragen bevor man von 2 verschiedenen dingen redet. Es gibt auch Leute die sagen submit button und haben dann nen link mit onclick='form.submit()' oder sowas drin ;P Auf jeden Fall ist dein Problem das der IE einen Submit Button nicht übergibt wenn du enter drückst ausser der Submit Button hat den focus. Dann drückst du per enter den Button und löst nicht direkt das submit event aus. Wieso benötigst du überhaupt unbedingt Daten die im button übergeben werden? Kann dir da ein hidden Feld nicht weiter helfen? Bearbeitet 23. Oktober 2009 von Lucius Zitieren
Cryver Geschrieben 23. Oktober 2009 Autor Geschrieben 23. Oktober 2009 Wenn ich ehrlich sein soll, hab ich an diese Möglichkeit gar nicht gedacht (also die mit dem hidden Feld). Das könnte ich auch machen. Die Daten bräuchte ich (bzw. "spezifische" Daten wie z.B. den einzigartig benannten submit Button) um eine Funktion auszuführen. Allerdings kann ich das auch mit dem hidden Feld machen, so bräuchte ich den submit button nicht. Allerdings, weiß jemand, warum der submit Button nicht erkannt wird? Mein Auftraggeber wird zwar nicht bemerken, dass der Submit Button nicht mitgesendet wird, jedoch bin ich trotzdem neugierig, um ehrlich zu sein. Zitieren
Lucius Geschrieben 23. Oktober 2009 Geschrieben 23. Oktober 2009 Allerdings, weiß jemand, warum der submit Button nicht erkannt wird? Mein Auftraggeber wird zwar nicht bemerken, dass der Submit Button nicht mitgesendet wird, jedoch bin ich trotzdem neugierig, um ehrlich zu sein. Wie ich oben schon geschrieben habe ist das ein Bug(oder so von MS gewollt?) im IE er sendet keine submit buttons mit wenn man enter drückt ausser der button hat gerade den focus. Zitieren
Cryver Geschrieben 23. Oktober 2009 Autor Geschrieben 23. Oktober 2009 Achso, ich hab das so verstanden, dass du das nochmal wiederholt hast- wie wenn man nochmal auf einen Fehler eingehen will, und dann hin und wieder wiederholt, was da nun los war. Dann sag ich mal vielen dank, du hast mir sehr geholfen Zitieren
etreu Geschrieben 28. Oktober 2009 Geschrieben 28. Oktober 2009 Die Geschichte mit dem Submit durch ENTER hatte ich auch vor kurzem. Betroffen war einzig und allein der IE7. Meine Lösung: e-treu.de submit on <ENTER> problem im internet explorer Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.