Julia: Button-Tag füllt sich immer mit value

Hi,
ich habe ein Formular gebastelt, um verschiedene Eingaben in einer DB zu speichern.
Darin ist zunächst ein Select, in dem der Benutzer zwischen verschiedenen Eingabemöglichkeiten wählen kann. Je nachdem bekommt er unterschiedliche Textfelder angezeigt.

Zum Absenden benutze ich einen Button, und zwar nicht als input type=submit, sondern als

<button type="button" name="Senden" onclick="PruefeAlles();">Speichern</button>

und zwar genau aus dem Grund, daß ich die gemachten Eingaben vor dem Speichern erst mit der JS-Funktion PruefeEingaben einer Plausiprüfung unterziehen will. Ist alles in Ordnung, steht in der Funktion der Code

document.MeinFormName.Senden.value = "Speichern";
document.MeinFormName.submit();

ansonsten soll der Benutzer seine Eingaben korrigieren.

Am Anfang meines Formular frage ich dann

if ($_POST['Senden'] == "Speichern"):

und schreibe die Eingaben in die Datenbank. Meine Überlegung war, daß sich der Senden-Button nur in der js-Funktion mit einem Value "Speichern" belegt. Jetzt stelle ich aber fest, daß beim Umschalten des Selects (dabei wird jedesmal ein submit simuliert) und somit dem Neuladen des Dokuments der Senden-Button mit einem value belegt wird. Das ist natürlich extrem unpassend.

Hat jemand von euch eine Idee? Mache ich einen Denkfehler?

Viele Grüße,
Julia

  1. Hallo Julia,
    der ganze Ansatz ist schon ein wenig verkehrt, nach meiner Meinung.

    Warum nutzt du Javascript bei so etwas wichtigem wie
    einem Formularcheck?

    Aber wenn du das schon machst, warum unbedingt das submit so
    dermaßen zu vergewaltigen?

    Ich kenne dein javascript leider nicht, aber dasollten sich andere
    Möglichkeiten finden.

    Gruss
    Denise

    1. Hi Denise und alle anderen natürlich auch!

      Offensichtlich war meine Problembeschreibung unzureichend, daher hier etwas ausführlicher:

      Ich wollte den Benutzern die Möglichkeit geben, Falscheingaben direkt zu verbessern. Da das bekanntlich mit php nicht geht, habe ich JavaScript-Funktionen geschrieben, die bei Auslösen des KeyPress-Ereignisses den Feldwert prüfen und bei Falscheingabe (z.B. Zahlen in einem Nur-Text-Feld) einen Alert ausgeben.

      So weit so gut! Der Benutzer füllt alles aus und drückt auf Speichern. Ich wollte zur Sicherheit noch einmal die einzelnen Felder prüfen und habe mir gedacht, ich habe dafür ja schon die JS-Funktionen und es wäre unsinnig, das ganze noch einmal in php zu machen. Und da die Übergabe einer Javascript-Variable, ob alles okay ist, an php ja so einfach nicht funktioniert, war meine Idee, anstatt eines submits bei Klick auf den Button erst eine Prüfung anzustoßen und bei erfolgreicher Prüfung den submit abzuschicken.

      Falls ihr andere Ideen habt, wie man das noch realisieren kann, bin ich dafür natürlich gerne offen - nobody is perfect!

      Viele Grüße,
      Julia

      1. Ahoi Julia,

        die eingaben zur sicherheit nach dem submit per PHP prüfen und sollten trotzdem falsche eingaben vorhanden sein bzw. unzulässige nicht speichern sondern eine fehlermeldung ausgeben z.B. per:

        echo "<body onLoad="javascript:alert(Falsche eingaben vorhanden)">";

        was aber relativ unnötig sein dürfte denn die unzulässigen eingaben können nur zustanden kommen wenn JS deaktiviert ist. also wohl eher ein:

        echo "<p>Falsche eingaben</p>";

        MfG

      2. Hi Julia,
        kann mich Daniel nur anschliessen.
        Du darfst auf keinen Fall eine serverseitige Prüfung weglassen !!!

        Eine JS Prüfung zusaätzlich als User Bonbon zu nutzen steht dem
        ja nicht im Wege, aber die braucht nicht umfangreich zu sein
        und erst recht den Submitbutton zu ignorieren.

        Schreibs nochmal neu.
        Prüfe mit onsubmit() und auf dem Server dann gründlich.

        Gruss
        Denise

  2. hi,

    Zum Absenden benutze ich einen Button, und zwar nicht als input type=submit, sondern als

    <button type="button" name="Senden" onclick="PruefeAlles();">Speichern</button>

    Dass der IE mit Button zahlreiche Probleme macht, kannst du im Archiv nachlesen.

    und zwar genau aus dem Grund, daß ich die gemachten Eingaben vor dem Speichern erst mit der JS-Funktion PruefeEingaben einer Plausiprüfung unterziehen will.

    Das ist kein Grund.
    Der Eventhandler onsubmit existiert.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Ahoi Julia,

    Ich muss sagen das ich es nicht ganz verstehe? Prüfst du die eingaben nicht in PHP? wenn du sie nicht prüfst, na dann lass mich mal mit deaktiviertem JS dran. Wenn du sie auch in PHP prüfst, wozu die doppelte arbeit?

    MfG

    1. Hi Daniel!

      Unter Denise's Posting habe ich das Problem noch einmal ausführlicher beschrieben.

      Prüfst du die eingaben nicht in PHP? wenn du sie nicht prüfst, na dann lass mich mal mit deaktiviertem JS dran.

      Es  ist eine Intranetanwendung für einen eingeschränkten Benutzerkreis und wird anderweitig sichergestellt, daß js aktiviert ist.

      Viele Grüße,
      Julia

      1. hi,

        Es  ist eine Intranetanwendung für einen eingeschränkten Benutzerkreis und wird anderweitig sichergestellt, daß js aktiviert ist.

        Auch das hindert nicht am Manipulieren der Daten.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  4. Hallo Julia,

    <button type="button" name="Senden" onclick="PruefeAlles();">Speichern</button>

    Das ist jetzt nicht die Antwort auf Deine Frage, aber ich würde hier einen normalen Submit-Button verwenden, dann funktioniert das Formular auch ohne JS:

    <input type="submit" name="send_button" value="Senden" onclick="return ist_alles_ok()" />

    Die Funktion ist_alles_ok gibt dann entweder true oder false zurück (und z.B. einen alert wenn false). Serverseitig müssen die übergebenden Werte aber auch nochmal überprüft werden (falls JS beim Client nicht verfügbar war)!

    Phlo

    1. Hi Phlo!

      Das ist jetzt nicht die Antwort auf Deine Frage, aber ich würde hier einen normalen Submit-Button verwenden, dann funktioniert das Formular auch ohne JS:

      <input type="submit" name="send_button" value="Senden" onclick="return ist_alles_ok()" />

      Die Funktion ist_alles_ok gibt dann entweder true oder false zurück (und z.B. einen alert wenn false). Serverseitig müssen die übergebenden Werte aber auch nochmal überprüft werden (falls JS beim Client nicht verfügbar war)!

      Wie gesagt, ich bin für andere Ideen mit der selben Funktionalität auch gerne offen!
      Wo bzw. wie kann ich denn den Rückgabewert aus ist_alles_ok prüfen bzw. wo ist er gespeichert?

      Viele Grüße,
      Julia

      1. Hi,

        Wo bzw. wie kann ich denn den Rückgabewert aus ist_alles_ok prüfen bzw. wo ist er gespeichert?

        Du kannst die Eingaben so pruefen:
        ...
        <form .... onsubmit="return ist_alles_ok();">
        ...

        Wenn ist_alles_ok() false zurueckgibt wird das Formular nicht abgeschickt, bei true schon.

        mfG,
        steckl

  5. Hi nochmal,
    euch allen ganz herzlichen Dank!

    Eure Argumente bezüglich js haben mich überzeugt; ich werde die Plausis nun eben doch in php schreiben.

    Viele Grüße,
    Julia