Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problem mit PhP und JavaScript im Internet Explorer

Empfohlene Antworten

Veröffentlicht

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.

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 von Lucius

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

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 von Cryver

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 von Lucius

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.

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.

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 :D

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.