Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular akzeptiert im FF keine false Rückgabe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formular akzeptiert im FF keine false Rückgabe

    Habe ein Problem, das ich einfach nicht gelöst bekomme.

    Ich habe ein Formular, das wenn man den Submit Button klickt oder Enter nie abgeschickt werden soll, da es lediglich eine JavaScript Funktion auslösen soll.

    Hier die JavaScript Funktion:

    Code:
    function abschicken()
    {     
        postSend('target=chateintrag&text=' + document.getElementById('nachricht').value + '&farbe=' + document.forms.onlinestatus.elements.farbe.selectedIndex);
        document.getElementById('nachricht').value = '';
        return false;
    }
    Im HTML Quellcode sieht das Formular so aus:

    Code:
    <form action="" method="post" onsubmit="return false; return abschicken();">
        <input id="nachricht" name="nachricht" size="125" />
        <input class="button" onclick="postSend('target=chateintrag&text=' + document.getElementById('nachricht').value + '&farbe=' + document.forms.onlinestatus.elements.farbe.selectedIndex);document.getElementById('nachricht').value = '';" name="nsend" type="submit" value="Senden" />
    </form>
    So wie es da jetzt steht ist mir klar, das es eigentlich nicht richtig ist, da ja zuerst ein False zurück gegeben wird und der Rest nicht mehr Interressant wäre. Allerdings ist es so die einzige Möglichkeit es im Firefox laufen zu lassen. Nehme ich das erste "return false" raus, schickt der Firefox die ganze Seite ab und lädt diese neu, was ja verhindert werden soll. Allerdings funktioniert es in dieser Variante dann im Internet Explorer. Egal was ich mache es läuft in einem der beiden Browser nicht richtig...
    Ich weiß auch einfach nicht was ich da jetzt so absolut falsch mache.

    Ich hoffe es kann mir jemand helfen.

  • #2
    Also ich benutze eigentlich ausschliessich Firefox und schaue immer erst am Schluss, ob und dass alles auch im Internet Explorer läuft und so ein Abbrechen kommt bei mir in jedem Formular vor, das Pflichtfelder hat (also eigentlich in jedem) und es funktioniert immer einwandfrei!
    Hast du schonmal versucht dem action-Attribut einen Wert zuzuweisen? Vielleicht tut sich der Firefox damit schwer! Es ist meiner Meinung nach ziemlich ungeschickt dort keinen Wert anzugeben! Du solltest dort zu einer Seite verweisen, die die Daten verarbeitet, falls ein Benutzer JavaScript deaktiviert hat!

    Kommentar


    • #3
      Das hatte ich auch schon probiert, hatte da $_SERVER[PHP_SELF]?target=chat angeben, was auf die selbe Seite verweist, aber das hat nichts geändert das Problem blieb das selbe...

      Kommentar


      • #4
        Mach doch mal probehalber
        Code:
        onsubmit="alert(abschicken());"
        um zu Prüfen, ob überhaupt false zurückgegeben wird oder bau ein paar alerts in die Funktion abschicken() ein. Vielleicht fällt dir ja eine Anomalie auf! Hast du die Ausführung des JS-Teil schonmal mit FireBug oder der WebDeveloper Extension gecheckt, ob da was gemeckert wird?

        Kommentar


        • #5
          Wenn ich ein alert, wie in deinem Beispiel, ausgebe, dann wird False beim IE ausgegeben, der FF allerdings lädt einfach nur die Seite neu. Baue ich am Anfang der Funktion "abschicken()" ein alert ein wird dieses auch angezeigt bei beiden Browsern und es wird bei keinem die Seite neu geladen es funktioniert... Baue ich das alert aber nach meinem Ajaxaufruf (die Funktion PostSend) ein wird dieses beim FF nicht mehr angezeigt und die Seite wird neu geladen. Fehler werden mir für das JavaScript nicht angezeigt.

          Meine Vermutung ist, dass die Funktion durch das Aufrufen der Ajax Funktion und dem Nachladen der Seite zu lange dauert und der FF die Funktion zwar zu Ende ausgeführt wird, der FF aber vorher schon der Meinung ist das dauert mir zu lange ich Lade jetzt neu sich sagt.

          Vielleicht kann mir hier dann jemand sagen wie ich spezifisch den IE oder FF ansprechen kann so das ich für beide das so bastel, dass es in beiden Funktioniert (so dass der FF das False zuerst bekommt und der IE am Ende der Funktion)

          Kommentar


          • #6
            Also mein FF lädt die Ursprungsseite nicht neu, wenn ich von dort per Ajax ein PHP-Script anspreche, das zu lange braucht um zu antworten! Ich sehe dann einfach die ganze Zeit das "loading" Symbol, das ich beim Absenden der Ajax-Anfrage angezeigt habe.

            Das Problem muss also in der Funktion liegen, die die Ajax-Abfrage startet. Kannst du diese vielleicht auch mal posten? Meistens deutet deine Beobachtung, dass es mit einem eingebauten alert() funktioniert, aber auf ein Problem mit dem DOM hin, sprich, dass mein ein Element ansprechen will, dass noch nicht aufgebaut wurde oder so. Durch den alert() entsteht eine kurze Verzögerung, die meistens aber schon ausreicht um den DOM fertig zu definieren! Bei einem Formular, das man aber irrrrgendwann abschicken kann, ist dies irgendwie kaum möglich....

            Wäre froh, wenn du mal die Funktion postSend() hier posten könntest!

            Kommentar


            • #7
              Also es ist eine ganz einfache Funktion:

              Code:
              function postSend(wert)
              {
                  XMLHTTP.open(\"POST\", \"ajaxziele.php5\");
                  XMLHTTP.onreadystatechange = DatenAusgeben;
                  XMLHTTP.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\");
                  XMLHTTP.send(wert);
              }
              und hier die Funktion die was ausgibt:

              Code:
              var AObject = \"ajax\";
              function DatenAusgeben()
              {
                  if (XMLHTTP.readyState == 4)
                  {
                      var d = document.getElementById(AObject);
                      d.innerHTML = d.innerHTML + XMLHTTP.responseText;
                      AObject = \"ajax\";
                  }
              }
              Allerdings bekommt in diesem Fall gar nichts zurück, da in der PHP Datei die Ausgeführt wird nur einige MySQL Abfragen ausgeführt werden und ich benutze diese Funktion für eine Menge anderer Abfragen und wird im Formular auf Senden geklickt führt er den onclick Befehl erfolgreich durch (wenn das Formular nicht die Seite neu lädt, also in der onsubmit return false steht)

              Kommentar


              • #8
                Warum benutzt Du überhaupt ein Formular, wenn nichts abgeschickt werden soll?

                Kommentar


                • #9
                  Es wird ja im übertragenden Sinne etwas abgeschickt. Allerdings geht dies eben an eine JavScript Funktion die über Ajax dieses dann verarbeitet. Stelle ich die Formularfelder nicht in ein Formular dann reagiert es auch nicht so einfach auf ein Enter im Eingabefeld, das dann die JavaScript Funktion ausführen soll. Es funktioniert ja auch eigentlich so, nur eben nicht in dem von mir hier beschriebenen Fällen. Und gerade weil es dabei aber eigentlich keine Probleme geben sollte frage ich das hier ja nach, aber anscheinend weiß man hier auch keine Antwort hier auf dieses Problem...

                  Kommentar

                  Lädt...
                  X