Markus: If-else Anweisung

Hi Leute!

Möchte eine If-else Anweisung aufbauen in der 2 bzw 3 else vorkommen sollen.

Hab in meinem Formular folgende spalten: PLZ, Ort, Bezirk, Bundesland!(priorität soll in der gleichen reihenfolge sein)!

Möchte folgendes machen:

Wenn PLZ ist nicht leer dann alert..
Sonst Wenn Ort = "xxx" dann alert..
Sonst Wenn Bezirk ="xxx" dann alert...
Sonst Wenn Bundesland ="xxx" dann alert...

Bis zum bezirk bringe ich es ja zusammen aber wie gehts dann weiter mit else?

Im klartext:

wenn eine Plz angegeben ist soll er was mit dieser machen,
wenn keine Plz angegeben ist soll er was mit dem Ort machen,
wenn keine Plz und Ort angegeben ist soll er was mit dem Bezirk machen,
wenn keine PLz und Ort und Bezirk angegeben soll er was mit dem Bundesland machen.

Wie kann ich es realisieren??

Habs im moment so laufen bis zum ort funktioniert es super:

<script>
function check()
  {
  if(document.Formular.PLZ.value != ""){
   if(document.Formular.PLZ.value.substr(0,1) == "1")
   alert("1");
    if(document.Formular.PLZ.value.substr(0,1) == "2")
   alert("2");
   }
else

{
    if(document.Formular.Ort.value.toLowerCase()  == "graz")
   alert("Ort Graz");
   if(document.Formular.Ort.value.toLowerCase()  == "wien")
   alert("Ort Wien");
else
  {
  if(document.Formular.Bezirk.selectedIndex == 1)
   alert("Bez Amstetten");
   if(document.Formular.Bezirk.selectedIndex == 2)
      alert("Bad Aussee");
 }
 }
 }
</script>

Die alert hab ich nur der einfacher halber eingefügt soll dann was anderes rein... aber zuerst sollte das grundprinzip funktionieren..

stehe da an mit der 2 else funktion: bei "wien" würde es mit dem bezirk funktionieren bei graz nicht...

Was mache ich da falsch??

Bitte um eure Hilfe

MFG
Markus

  1. Hi,
    ich glaub ich den fehler! siehe mein Kommentar im Skript!

    function check()
      {
      if(document.Formular.PLZ.value != ""){
       if(document.Formular.PLZ.value.substr(0,1) == "1")
       alert("1");
        if(document.Formular.PLZ.value.substr(0,1) == "2")
       alert("2");
       }
    else

    {
        if(document.Formular.Ort.value.toLowerCase()  == "graz")
       alert("Ort Graz");
       if(document.Formular.Ort.value.toLowerCase()  == "wien")
       alert("Ort Wien");
    else // DIESES ELSE BEZIEHT SICH NUR AUF DAS wien-IF! Muss sich auf das gesamte Ort-if beziehen.
      {
      if(document.Formular.Bezirk.selectedIndex == 1)
       alert("Bez Amstetten");
       if(document.Formular.Bezirk.selectedIndex == 2)
          alert("Bad Aussee");
     }
     }
     }

    versuchs mal so:

    function check()
    {
       if(document.Formular.PLZ.value != "")
       {
          if(document.Formular.PLZ.value.substr(0,1) == "1")
             alert("1");
          if(document.Formular.PLZ.value.substr(0,1) == "2")
             alert("2");
       }
       else if(document.Formular.Ort.value.toLowerCase() != "")
       {
          if(document.Formular.Ort.value.toLowerCase() == "graz")
             alert("Ort Graz");
          if(document.Formular.Ort.value.toLowerCase() == "wien")
             alert("Ort Wien");
       }
       else if(document.Formular.Bezirk.selectedIndex > -1)
       {
          if(document.Formular.Bezirk.selectedIndex == 1)
             alert("Bez Amstetten");
          if(document.Formular.Bezirk.selectedIndex == 2)
             alert("Bad Aussee");
       }
    }

    du kannst deine Pseudocode also fast nach JS übersetzen!
    "sonst wenn" einfach durch else if ersetzen. Die else-Blöcke könntest du auch noch in { } setzen, ist aber nicht nötig.

    SChreib, wenns klappt!

    Gruß
    Christian

    1. Hi Christian!

      Danke für deine Hilfe!

      Bin jetzt schon einen Schritt weiter! Aber habe noch immer nicht die 100%ige Lösung..

      Habs im moment so laufen:

      <script>
      function check()
        {
        if(document.Formular.PLZ.value != ""){
         if(document.Formular.PLZ.value.substr(0,1) == "1")
         alert("1");
          if(document.Formular.PLZ.value.substr(0,1) == "2")
         alert("2");
         }
      else if(document.Formular.Ort.value != "")
         {
      if(document.Formular.Ort.value.toLowerCase()  == "graz")
         alert("Ort Graz");
         if(document.Formular.Ort.value.toLowerCase()  == "wien")
         alert("Ort Wien");
         }
      else if(document.Formular.Bezirk.selectedIndex  > 0)
        {
        if(document.Formular.Bezirk.selectedIndex == 1)
         alert("Bez Amstetten");
         if(document.Formular.Bezirk.selectedIndex == 2)
            alert("Bad Aussee");
       }
       else if(document.Formular.Bundesland.selectedIndex  > 0)
        {
        if(document.Formular.Bundesland.selectedIndex == 1)
         alert("1 Land");
         if(document.Formular.Bundesland.selectedIndex == 2)
            alert("2 Land");
       }
       }
      </script>

      Nun habe ich folgendes Problem beim Ort:

      Ich deffiniere zb die Orte: Graz, Wien, Salzburg und sonst keine..
      Wenn jetzt jemand Ort: Graz und Bundesland Steiermark angibt wird der Ort genommen ist auch gut so..

      Aber wenn jemand Ort: Nistelbach und Bundesland Steiermark angibt sollte der Ort ausgelassen werden und Steiermark genommen werden.(Weil eben zb. Nistelbach nicht deffiniert wurde in den Orten)

      Wie könnte ich das noch anstellen?

      2. Problem:

      die PLZ:

      im moment wird gesucht wenn PLZ nicht leer ist mache was.....

      das ist ja OK..

      Mein Problem ich habe im PLZ-Feld im Formular zusätzlich das "A-" vordeffiniert. (dh. A- steht schon da und man kann nun die gewünschte PLZ anfügen).

      Mein Problem wie bringe ich das A- jetzt in die Funktion rein, weil das feld so ja immer gefüllt ist mit diesem A- auch wenn der User keine PLZ angibt..

      Leider gibts auch noch die 2 Möglichkeit dass der User das A- weglöscht und zb nur eine PLZ eingibt.

      Wie könnte ich das mit dem A- vereinen in der obigen funktion?

      Wäre über eine weitere Hilfe sehr dankbar!

      MFG
      Markus

      1. Hallo Markus,

        wie wär folgendes:

        <script>
        function check()
          {

        var plz=document.Formular.PLZ.value;
               var ort=document.Formular.Ort.value.toLowerCase();

        //Eliminieren des "A-" aus der zu untersuchenden PLZ
               if (plz.substr(0,1)=="A-") plz=plz.substr(2,plz.length()-2);

        //Nicht erlaubte Orte werden für Untersuchung auf "" gesetzt
               if (ort!= "graz" && ort != "wien") ort="";

        //Hier wird die behandelte plz verwendet
             if(plz != ""){
            if(plz.substr(0,1) == "1")

        alert("1");

        if(plz.substr(0,1) == "2")

        alert("2");
           }

        //Hier wird der behandelte Ort verwendet
         else if(ort != "")

        {
        if(ort  == "graz")
           alert("Ort Graz");
           if(ort  == "wien")
           alert("Ort Wien");
           }
        else if(document.Formular.Bezirk.selectedIndex  > 0)
          {
          if(document.Formular.Bezirk.selectedIndex == 1)
           alert("Bez Amstetten");
           if(document.Formular.Bezirk.selectedIndex == 2)
              alert("Bad Aussee");
         }
         else if(document.Formular.Bundesland.selectedIndex  > 0)
          {
          if(document.Formular.Bundesland.selectedIndex == 1)
           alert("1 Land");
           if(document.Formular.Bundesland.selectedIndex == 2)
              alert("2 Land");
         }
         }
        </script>

        Gruß Ralf

        1. Hi Ralf!

          Danke für deine Hilfe! Bin wieder einen Schritt weitergekommen!

          Das mit dem Ort funktioniert das mit der PLZ noch nicht:

          Das ist eine gute Idee spart Platz!

          var plz=document.Formular.PLZ.value;
                 var ort=document.Formular.Ort.value.toLowerCase();

          Das funktioniert leider nicht! Wenn ich zb: als Standart A- im PLZ feld habe und den Ort Graz sollte die alert Meldung "Ort Graz" kommen.
          Das gleiche wenn ich A-1010 eingebe.
          Funktioniert nur wenn ich nur 1010 eingebe.

          Was ist daran falsch??

          //Eliminieren des "A-" aus der zu untersuchenden PLZ
                 if (plz.substr(0,1)=="A-") plz=plz.substr(2,plz.length()-2);

          Funktioniert gut!

          //Nicht erlaubte Orte werden für Untersuchung auf "" gesetzt
                 if (ort!= "graz" && ort != "wien") ort="";

          Hier nochmal mein derzeitiger Status:

          <script>
          function check()
            {
            var plz=document.Formular.PLZ.value;
            var ort=document.Formular.Ort.value.toLowerCase();

          if (plz.substr(0,1)=="A-") plz=plz.substr(2,plz.length()-2);

          if (ort!= "graz" && ort != "wien") ort="";

          if(plz != ""){
             if(plz.substr(0,1) == "1")
             alert("1");
              if(plz.substr(0,1) == "2")
             alert("2");
             }
          else if(ort != "")
             {
          if(ort == "graz")
             alert("Ort Graz");
             if(ort  == "wien")
             alert("Ort Wien");
             }
          else if(document.Formular.Bezirk.selectedIndex  > 0)
            {
            if(document.Formular.Bezirk.selectedIndex == 1)
             alert("Bez Amstetten");
             if(document.Formular.Bezirk.selectedIndex == 2)
                alert("Bad Aussee");
           }
           else if(document.Formular.Bundesland.selectedIndex  > 0)
            {
            if(document.Formular.Bundesland.selectedIndex == 1)
             alert("1 Land");
             if(document.Formular.Bundesland.selectedIndex == 2)
                alert("2 Land");
           }
           }
          </script>

          Mit dem "A-" gibts noch Probleme sonst müßte es glaub ich laufen...

          Wäre dir sehr dankbar wenn du das auch noch lösen könntest.

          Das A- sollte wenn es da steht ignoriert werden.

          wenn es weggelöscht wird und nur die PLZ 1010 steht auch gehen.

          wenn es da bleibt A-1010 sollte es auch gehen.

          Vielen Dank

          MFG
          Markus

          1. Hi Markus,

            if (plz.substr(0,1)=="A-") plz=plz.substr(2,plz.length()-2);

            kann nicht funktionieren, da length keine Methode sondern eine Eigenschaft
            vom String-Objekt ist.

            if (plz.substr(0,1)=="A-") plz=plz.substr(2,plz.length -2);

            müßte jedoch klappen.

            Gruß Ralf