2 Button in einem Formular, Confirm()

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

  • 2 Button in einem Formular, Confirm()

    Hi, ein einfaches problem, werde aber atm aus Selfhtml nich schlau...

    Ich habe ein Formular mit 2 Submitbuttons (beide benannt)

    Der eine ist zum bearbeiten und der andere zum löschen.

    Drückt man den Bearbeiten Button, so soll das Formular ganz normal abgesendet werde, drückt man den Löschen Button, soll das Formular nur abgesendet werde, wenn die javascript Funktion confirm true liefert.

    Allerdings wird das Formular immer abgesendet.

    Habe biser confirm immer im form tag benutzt mit dem Ereignis onSubmit, aber die Abfrage soll ja nur kommen, wenn ich den Löschen Button gedrückt habe.

    Mein 1. Ansatz war, die JS-Funktion Confirm nach dem Ereignis onClick auszulösen, aber auch wenn man abbrechen drückt, wird das formular abgesendet, mein 2. Ansatz war, eine JS Funktion aufzurufen, diese ruft confirm auf, bei false soll das Formular fokusiert werden, bei true submit gemacht werden, aber das Formular wird immer abgesendet.

    hat einer einen einfachen Lösungsvorschlag ?

    thx & cya max


    An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

  • #2
    Re: 2 Button in einem Formular, Confirm()

    Original geschrieben von MaxP0W3R
    hat einer einen einfachen Lösungsvorschlag ?
    beim onclick auf den löschen-button setzt du dir ein flag auf true.
    (vorher ggf. global mit false initialisieren.)

    onsubmit überprüfst du jetzt einfach, ob dieses flag gesetzt ist. wenn nein, gibst du sofort true zurück, formular wird abgesendet.

    wenn ja, löst du erst das confirm aus, und gibst dessen rückgabewert zurück - formular wird nur abgesendet, wenn mit "OK" bestätigt wurde.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      dein Vorschlag klingt logisch, aber das Formular wird immer noch jedesmal abgesendet

      im Header steht das :

      Code:
      <script type="text/javascript">
      var check = true;
      
      function confirm_delete_cat()
      {
      	check =  confirm("Wollen Sie diese Kategorie wirklich löschen?");
      }
      
      function check_cat()
      {
      	return check;
      }
      </script>

      und im Formular das :

      Code:
      <p align="center"><b>Kategorie Bearbeiten</b></p>     
      <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" 
      name="edit_cat_form" onSubmit="check_cat()">
              Kategorie
              <select name="cat_id">
              </select>
              <input type="submit" name="edit_cat" value="Bearbeiten">
              oder 
              <input type="submit" name="delete_cat" value="L&ouml;schen" onClick="confirm_delete_cat()">
            </form>
      habe ich das jetzt falsch umgesetzt oder funktioniert so einfach nicht ?
      Zuletzt geändert von MaxP0W3R; 21.10.2004, 12:10.


      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

      Kommentar


      • #4
        na ja, ist nicht ganz so umgesetzt, wie ich es gemeint hatte, aber eigentlich auch funktionsfähig.

        nur eins hast du noch nicht korrekt gemacht:

        um das abschicken des formular zu beeinflussen, muss der eventhandler onSubmit selber per return true oder false zurückgeben.

        bei deinem onSubmit="check_cat()" gibt die funktion zwar den wert an den eventhandler, dieser gibt ihn aber nicht weiter.

        onSubmit="return check_cat()" wäre geeignet, um das gewünschte zu tun.

        check_kat() brauchst du aber eigentlich auch gar nicht, denn du hast ja deine variable check mit dem inhalt true oder false - also reicht

        onSubmit="return check;"

        auch vollkommen aus.


        btw: einen sonderfall hast du noch nicht berücksichtigt:
        user klickt erst auf löschen, verneint aber dann die abfrage, weil er eigentlich bearbeiten wollte.
        check hat aber jetzt den wert false, formular wird also auch beim klicken von bearbeiten nicht mehr abgesendet.
        du solltest also onclick auf den bearbeiten-button noch dafür sorgen, dass check wieder auf true gesetzt wird, für alle fälle ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Code:
          var checked = true;
          
          function confirm_submit() {
            if (!checked)
              checked = confirm("Sicher?");
            if (checked)
              return true;
            else {
              checked = true;
              return false;
            }
          }
          und bei deinem löschen-button schreibst du einfach checked = false; ins onclick
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Hi, vielen dank, das mit dem return im onSubmit hätte ich aber wissen müssen, mache das ja nicht zum ersten mal (aber viel zu selten, ich mag Javascript irgendwie nicht).

            So sieht der fertige, funktionsfähige Code aus :

            Im HTML-header steht das :

            PHP-Code:
            <script type="text/javascript">
            function 
            confirm_delete_cat()
            {
                
            check =  confirm("Wollen Sie diese Kategorie wirklich löschen?");
            }
            </
            script
            und so sieht das Formular aus :

            PHP-Code:
            <p align="center"><b>Kategorie Bearbeiten</b></p>     
            <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
             name="edit_cat_form" onSubmit="return check">
                    Kategorie
                    <select name="cat_id">
                    </select>
                    <input type="submit" name="edit_cat" value="Bearbeiten" onClick="check = true">
                    oder 
                    <input type="submit" name="delete_cat" value="L&ouml;schen" onClick="confirm_delete_cat()">
                  </form>
            Vielen Dank für die Tipps

            cya max
            Zuletzt geändert von MaxP0W3R; 21.10.2004, 12:34.


            An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

            Kommentar


            • #7
              OffTopic:
              ... und auch max sollte seine Zeilen umbrechen
              [COLOR=royalblue]Ein großes DANKE an alle, die sich auf selbstlose Weise im Forum einbringen.[/COLOR]

              [COLOR=silver]btw: REAL PROGRAMMERs aren't afraid to use GOTOs![/COLOR]

              [color=indigo]Etwas ernster, aber auch nicht weiter tragisch, sieht die Situation bei Software-Patenten aus. Software-Patente sind eine amerikanische Erfindung und stehen auf dem selben Blatt wie genveränderte Babynahrung, die im Supermarkt nicht mehr als solche gekennzeichnet werden soll, um die Hersteller nicht gegenüber denen natürlicher Produkte zu diskriminieren ...[/color]
              (from here)

              Kommentar

              Lädt...
              X