Martin: IE ignortiert JS

hallo,
ich habe ein script das die formulareingaben überprüft und erst dann das abschicken erlaubt.
wenn ich beim ie aber js ausschalte kann man das formular abschicken obwohl die bedingungen nicht erfüllt werden also die felder leer sind.
wie kann ich das verhindern?
wenn js deaktiviert ist sollte doch eigentlich garnix passieren oder?

function check()
{
if(document.f.name.value=="")
{alert("Sie haben nicht alle Felder ausgefüllt!"); return false;}

}

<input type="submit" onclick="return check();">

martin

  1. Hi,

    function check()
    {
    if(document.f.name.value=="")

    ^ ^  haben hier nichts verloren

    {alert("Sie haben nicht alle Felder ausgefüllt!"); return false;}
           ^                                        ^ die hier ebenfalls nicht.

    Es ist auch sehr geschickt, wenn eine Funktion in einem Fall einen definierten Returnwert hat, im anderen Fall aber keinen...

    }

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/
    1. hi,

      if(document.f.name.value=="")
                                   ^ ^  haben hier nichts verloren
      {alert("Sie haben nicht alle Felder ausgefüllt!"); return false;}
             ^                                        ^ die hier ebenfalls nicht.

      das javascript steht in einem php-echo.hab ich vergessen rauszumachen

      Es ist auch sehr geschickt, wenn eine Funktion in einem Fall einen definierten Returnwert hat, im anderen Fall aber keinen...

      was meinst du???

      danke für deine antwort
      martin

      1. <input type="submit" onclick="return check();">

        Könnte es eventuell sein, dass "return check();" immer ein true liefert, weil die Funktion "check()" existiert?

        change to:

        <input type="submit" onClick="check();">

        fastix

        1. Moin!

          <input type="submit" onclick="return check();">

          Könnte es eventuell sein, dass "return check();" immer ein true liefert, weil die Funktion "check()" existiert?

          Nein, daran liegt es garantiert nicht. Wenn, dann müßte man mit "return check" abfragen, ob die Funktion existiert. Wie man auch abfragt, ob "document.getElementById" existiert, dann aber mit "document.getElementById(id)" benutzt wird.

          change to:

          <input type="submit" onClick="check();">

          Meeeep. Falsch!

          - Sven Rautenberg

          --
          "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
          1. Moin!

            <input type="submit" onClick="check();">

            Meeeep. Falsch!

            Naja. Ich progge ja auch kaum noch Javascripte :)

            fastix

      2. Hi,

        Es ist auch sehr geschickt, wenn eine Funktion in einem Fall einen definierten Returnwert hat, im anderen Fall aber keinen...

        was meinst du???

        Guck Dir Deine Funktion an.
        Welchen Wert return-iert sie, wenn document.f.name.value != "" ist?

        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
        http://mud-guard.de/
  2. Hallo,

    wie kann ich das verhindern?

    <input type="submit" onclick="return check();">

    <input type="button" onclick="check_send();">

    die Funktion check_send() prüft die Felder und macht dann wenn alles ok ist, document.formularname.submit();

    Ohne JS passiert gar nichts.

    Gruß,
    ueps

    --
    Selfcode: ss:} zu:{ ls:& fo:) de:[ va:| ch:| n4:( rl:( br:] js:} ie:} fl:(
    1. hallo ueps,

      Ohne JS passiert gar nichts.

      doch
      sowie du es gemeint hast müsste man den button wahrscheinlich als nichtsubmit-button definieren aber so sendet er es einfach an das <form>-action.

      1. Hallo,

        sowie du es gemeint hast müsste man den button wahrscheinlich als nichtsubmit-button definieren aber so sendet er es einfach an das

        <form>-action.

        Genau, lass den Submit Button weg und mach nen normalen daraus. Wenn ohne JavaScript eh kein Formular versendet werden darf, kannst du getrost im JS Teil das Formular abschicken.

        Gruß,
        ueps

        --
        Selfcode: ss:} zu:{ ls:& fo:) de:[ va:| ch:| n4:( rl:( br:] js:} ie:} fl:(
  3. hallo,

    <input type="submit" onclick="return check();">

    Zum Absenden von Formulardaten brauchts kein Javascript.
    Beim Klick auf den submit- Button wird also onClick="plapla" ignoriert und versendet. Also genau das gemacht, was js abfangen soll, welches aber in Narkose liegt. Es passiert dasselbe, was passiert, wenn der Torhüter pennt und jemand auf das Tor schießt...

    Deine Frage ist also mit "Nein" beantwortet.
    Einzige Möglichkeit des Verhinderns des Versendens leerer Formulare bei deaktiviertem Javascript:

    Biete kein Formular an... Bau das Tor ab :)

    fastix

  4. Hallo Martin,

    wenn js deaktiviert ist sollte doch eigentlich garnix passieren oder?

    Nein, in diesem Fall passiert einfach das, was ohne JS passieren sollte: das Formular hat ein action-Attribut und einen Submit-Button, also wird beim Anklicken des Submit-Buttons das aufgerufen, was bei action angegeben ist.

    Wenn du eine Formularueberpruefung haben willst, die auch ohne JavaScript funktioniert, musst du diese serverseitig durchfuehren, also z.B. in dem Script (z.B. Perl, PHP...), das bei action= aufgerufen wird. Falls du natuerlich bei action= eine mailto:-Adresse angibst, hast du keine Chance. Das ist nun mal einer der zahlreichen Nachteile von mailto-Formularen.

    viele Gruesse
      Stefan Muenz

    1. Hallo Stefan,
      was für eine ehre

      Wenn du eine Formularueberpruefung haben willst, die auch ohne JavaScript funktioniert, musst du diese serverseitig durchfuehren

      schade mit js auf der gleichen seite war das immer so schön bequem aber geht wohl nicht anders.
      vielen dank
      martin

  5. Hi,

    Also vorweg, die serverseitige lösung ist definitv die elgantere, aber wenn es darum geht, daß bei deaktiviertem JavaScript einfach garnichts passieren soll:

    [...]
    function check()
    {
      if(document.f.name.value=="")
      {
        alert("Sie haben nicht alle Felder ausgefüllt!");
      }
      else
      {
        document.f.submit();
      }
    }
    [...]
    <input type="button" VALUE="Und wech damit!" onClick="check();">
    [...]
    <NOSCRIPT>
    Dieses Formular funktioniert nur, wenn Sie JavaScript aktivieren.<BR>
    </NOSCRIPT>
    [...]

    Viele Grüße
    Marcus