Michi: confirm sendet bei Abbrechen trotzdem

Hallo kann mir bitte jemand auf die Sprünge helfen, was bei mir im Skript falsch ist ?
Ich habe mehrere Formulare auf der Seite die ein Select beinhalten.
Wenn ein Formular gesendet wird, und der Select dieses Formular den Wert 1 hat, soll nochmals bestätigt werden ob ich wirklich senden will.
Funktioniert bislang auch prima, wenn ich aber auf Abbrechen gehe, wird das Formular trotzdem gesendet ????
Ich kapier nicht warum. Danke für nen Tip

<script type="text/javascript">
function sure (){
var e = document.forms.length;
for (var i = 0; i < e ; i++)
if(document.forms[i].lastChild.previousSibling.value==1)
 {return confirm("Sind Sie sicher?");}
}
</script>

Gruß Micha

  1. Hi,

    {return confirm("Sind Sie sicher?");}

    wird der return-Wert an der aufrufenden Stelle überhaupt ausgewertet?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas

      {return confirm("Sind Sie sicher?");}

      wird der return-Wert an der aufrufenden Stelle überhaupt ausgewertet?

      Wie kann ich denn das feststellen? :(
      Tut mir leid, kenn mich nicht so gut aus, deshalb die Nachfrage
      Gruß Micha

      1. Hi,

        Wie kann ich denn das feststellen? :(

        Durch Angucken der aufrufenden Stelle.
        Wenn Du es dort nicht selbst erkennst: zeig uns die aufrufende Stelle.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hello,

    {return confirm("Sind Sie sicher?");}

    wie sieht denn das Formular aus bzw. wer ruft diese Funktion aus. Ein return-false unterbricht das Absenden nur, wenn es auch per onsubmit den Wert weiterliefert, im Sinne von
    obsubmit="return sure()"

    MfG
    Rouven

    --
    -------------------
    Ambition is the last refuge of failure.  --  Oscar Wilde (Irish Poet, Novelist, Dramatist and Critic, 1854-1900)
    1. Hallo Rouven,

      wie sieht denn das Formular aus bzw. wer ruft diese Funktion aus. Ein return-false unterbricht das Absenden nur, wenn es auch per onsubmit den Wert weiterliefert, im Sinne von
      obsubmit="return sure()"

      Hier das Formular:

      <form method="post"  onSubmit="sure();" action="intern.php">
        <input name="Hausnummer" type="hidden" value="11" />
        <select name="machDas" size="1">
          <option value="0">Keine Aktion</option>
          <option value="1">Verkauft</option>
          <option value="2">Reservierung</option>
          <option value="3">Reservierung aufheben</option>
          <option value="4">Reservierung verl&auml;ngern</option>
        </select>
        <button class="Button" name="execute" type="submit" >ausf&uuml;hren</button>
      </form>

      Danke und Gruß Micha

      1. Moin

        du siehst den Unterschied?

        obsubmit="return sure()"

        Hier das Formular:

        <form method="post"  onSubmit="sure();" action="intern.php">

        Gruß
        rfb

        --
        Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
        (Galileo Galilei)
  3. Hi,

    function sure (){
    var e = document.forms.length;
    for (var i = 0; i < e ; i++)
    if(document.forms[i].lastChild.previousSibling.value==1)
    {return confirm("Sind Sie sicher?");}
    }

    Noch was: welchen return-Wert liefert Deine Funktion, wenn kein value==1 zutrifft?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas,

      Noch was: welchen return-Wert liefert Deine Funktion, wenn kein value==1 zutrifft?

      Die anderen Werte sind 0,2,3 und 4.
      Gruß Micha

      1. Hi,

        Noch was: welchen return-Wert liefert Deine Funktion, wenn kein value==1 zutrifft?

        Die anderen Werte sind 0,2,3 und 4.

        Ich sehe in der Funktion kein return 0; oder return 2; oder return 3; oder return 4; oder irgendetwas, was einen derartigen returnwert liefern würde.

        Lies die Frage nochmal durch. Ich habe nicht gefragt, welche Werte das value-Dings haben kann, sondern welchen return-Wert die Funktion liefert, wenn keines der value-Dinger den Wert 1 hat.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Noch was: welchen return-Wert liefert Deine Funktion, wenn kein value==1 zutrifft?

          Ich glaube(hoffe) ich hab kapiert, was Du wissen willst.
          Habe das script modifiziert;

          if(document.forms[i].lastChild.previousSibling.value==1)
            {var ergebnis = confirm("Sind Sie sicher?");alert(ergebnis);
            }
          }

          Wenn ich jetzt auf Ok drücke kommt True, bei Abbrechen kommt False...

          War es das was Du gemeint hast?
          Gruß Micha

          1. Hello,

            Noch was: welchen return-Wert liefert Deine Funktion, wenn kein value==1 zutrifft?
            if(document.forms[i].lastChild.previousSibling.value==1)
              {var ergebnis = confirm("Sind Sie sicher?");alert(ergebnis);
              }
            War es das was Du gemeint hast?

            nein, offensichtlich nicht - denn das kommt ja zurück WENN der Wert 1 ist. Er wollte wissen was zurück kommt, wenn der Wert NICHT 1 ist.

            MfG
            Rouven

            --
            -------------------
            Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
            1. Hallo

              nein, offensichtlich nicht - denn das kommt ja zurück WENN der Wert 1 ist. Er wollte wissen was zurück kommt, wenn der Wert NICHT 1 ist.

              Also bei else kommt 0 raus

              if(document.forms[i].lastChild.previousSibling.value==1)
                {alert(document.forms[i].lastChild.previousSibling.value);}
                else
                {alert(document.forms[i].lastChild.previousSibling.value);}
              }

              Kannst Du mir sagen wo Deine Vermutung hinzielt, vielleicht finde ich ja dann den Fehler?
              Danke und Gruß Micha

              1. Hello,

                if(document.forms[i].lastChild.previousSibling.value==1)
                  {alert(document.forms[i].lastChild.previousSibling.value);}
                  else
                  {alert(document.forms[i].lastChild.previousSibling.value);}
                }

                du hast den Hinweis immer noch nicht verstanden: Dein Code (im Ausgangsposting) sagt: Wenn der Wert 1 ist, dann gebe (return) den Wert des confirm-Dialogs zurück. <- Punkt. Schluss. Du sagst nirgendwo, was zurückgegeben werden soll, wenn der Wert nicht 1 ist.

                Kannst Du mir sagen wo Deine Vermutung hinzielt, vielleicht finde ich ja dann den Fehler?

                der Hauptfehler wurde im anderen Diskussionsfaden geklärt und bezieht sich auf die Anbringung im onsubmit. Das hier klärt lediglich die weiteren Fälle ab.

                MfG
                Rouven

                --
                -------------------
                He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
                1. Hallo Rouven,
                  manchmal steht man wirklich auf der Leitung!
                  Danke für Deine Ausdauer, jetzt hab ichs kapiert.
                  Gruß Micha

  4. Hallo Michi,

    zusätzlich zu dem, was schon geschrieben wurde:

    if(document.forms[i].lastChild.previousSibling.value==1)

    sei bei solchen Konstruktionen vorsichtig. Die Frage, was denn ein Knoten ist, ist leider nicht browserübergreifend einheitlich geklärt. Zeilenumbrüche oder Leerzeichen zwischen HTML-Elementen werden je nach Browser als Textknoten angesehen. So etwas, wie z.B.

    <_irgendeinTag_><_irgendeinTag_><_irgendeinTag_>

    liefert bei Deiner Abfrage möglicherweise etwas anderes, als

    <_irgendeinTag_>
    <_irgendeinTag_>
    <_irgendeinTag_>

    Gruß, Jürgen