Sonic: return true, return false, HILFE

Hallo,

ich habe eine Funktion, in der ich eine zweite Funktion chkform() aufrufe:

function test() {
 chkform();
 document.form.submit();
}

function chkform() {
 if (document.form.name.value=="") {
   alert("Name eingeben!");
   return false;
 }
}

Wenn das Feld "Name" leer ist, soll nach dem alert nichts weiter passieren. Wie mache ich das mit return? Jetzt ist es so, dass die Form abgeschickt wird.

Danke

  1. Hi,

    function test() {
    chkform();
    document.form.submit();
    }

    da steht ja auch nichts von "beachte den Rückgabewert".
    Varianten wären:
    if (!chkform()) return;    // verlasse test() sofort, falls chkform fehlschlägt

    if (chkform())
       document.form.submit();   // führe das submit aus, falls chkform() erfolgreich verlaufen ist.

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Varianten wären:
      if (!chkform()) return;    // verlasse test() sofort, falls chkform fehlschlägt

      if (chkform())
         document.form.submit();   // führe das submit aus, falls chkform() erfolgreich verlaufen ist.

      Beide Varianten funktionieren bei mir nicht. Was mache ich falsch?

      function test() {
       if (window.event.keyCode==13) {
          if (chkform()) {                  //ohne dieser Abfrage geht es
            document.form.submit();
          }
       }
      }

  2. ich habe eine Funktion, in der ich eine zweite Funktion chkform() aufrufe:

    function test() {
    chkform();
    document.form.submit();
    }

    Warum willst du unbedingt das Formular mit JS abschicken?
    Notier im onsubmit Handler die Funktion, dann kannst du auch gleich das Formular übergeben:

    <form action="..." onsubmit="return test(this)">

    function test(form) {
    if(!chkform(form) return false;
    ....

    }

    function chkform(form) {
    if (!form.name.value) {
    alert("Name eingeben!");
    return false;
    }
    return true;
    }

    Struppi.

  3. Hallo,

    function test() {
    chkform();
    document.form.submit();
    }

    Der Aufruf von chkform() in dieser Funktion ist nutzlos, denn Du verwirfst den Rückgabewert ja sofort.
    Du mußt aber diesen Rückgabewert daraufhin prüfen, ob er FALSE oder TRUE ist und daraufhin das Formular absenden oder nicht.
    Also if(chkform.......).

    Abgesehen davon solltest Du dafür sorgen, daß die Funktion chkform() IMMER einen Bool'schen Wert liefert, also entweder TRUE oder FALSE, und sie vielleicht auch anders benennen: Funktionen, die einen Bool'schen Wert zurückgeben, bezeichnet man meistens nach dem Schema isValid() oder hasChildNodes() - das macht den Code lesbarer.

    Ciao,
    Andreas

    --
    "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
    1. Du mußt aber diesen Rückgabewert daraufhin prüfen, ob er FALSE oder TRUE ist und daraufhin das Formular absenden oder nicht.

      Entweder schreist du oder du machst einen Fehler true/false werden in JS klein geschrieben.

      Struppi.

  4. hi,

    if (document.form.name.value=="") {

    Bekommst du damit keine Fehlermeldung?

    (form.name enthält den Inhalt des name-Attributes des Formulars. Darunter existiert aber natürlich keine Eigenschaft value.
    Bitte benenne _nie_ ein Formular_element_ mit name="name", wenn du mit Javascript darauf zugreifen willst.)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. if (document.form.name.value=="") {

      Bekommst du damit keine Fehlermeldung?

      (form.name enthält den Inhalt des name-Attributes des Formulars. Darunter existiert aber natürlich keine Eigenschaft value.
      Bitte benenne _nie_ ein Formular_element_ mit name="name", wenn du mit Javascript darauf zugreifen willst.)

      Bis jetzt hat es funktioniert :)

  5. Hi,

    na ja, du hast den Kommentar von Andreas noch nicht berücksichtigt: Deine Funktion kennt im Moment nur einen wirklichen Rückgabewert, nämlich false. True wird niemals explizit zurückgegeben, was JS da zurückgibt kann ich dir im Moment nicht beantworten, aber du solltest darauf achten, dass in _jedem_ Fall true oder false zurückgegeben wird.

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. ...sorry, das sollte eigentlich hier hin...

      MfG
      Rouven

      --
      -------------------
      ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(