kostenloser Webspace werbefrei: lima-city


Kombi-Prüfung mit JS

lima-city: kostenloser WebspaceForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    ekiam

    Kostenloser Webspace von ekiam

    Benutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Stallbursche

    378 Gulden

    0 positive Bewertungen
    0

    ekiam hat kostenlosen Webspace.

    Hallo Zusammen,

    bevor ich hier Frage habe ich bereits das große "G****" durchsucht aber nichts äqui­va­lentes für mich gefunden.

    Mein Problem:
    Ich möchte in mein Formular mit jeder Menge INPUT-Feldern prüfen.
    Dies funktioniert auch.

    Allerdings muss ich drei (3) Felder in Komibnation prüfen.

    Diese Felder sind "JAHR" (4-Stellen) Monat (2-Stellen) und ein Feld vom Type "Checkbox".

    Folgendes muss geprüft werden:
    Monat+Jahr+Checkbox-Feld gefüllt = Fehler
    Monat+Jahr+Checkbox-Feld nicht gefüllt = Fehler
    Monat+Jahr nicht geüllt aber Checkbox-Feld gefüllt = RICHTIG
    Monat+Jahr geüllt aber Checkbox-Feld nicht gefüllt = RICHTIG

    Irgendwie bekomme ich das nicht hin, bin allerdings kein JS-Spezialist.

    Es wäre schön, wenn mir jemand ein Beispiel aufzeigen könnte.

    Vielen Dank im voraus.

    Freundliche Grüße
    Ekiam
    --------------------------------------------------------------------------------------
    nichts auf der Welt ist vollkommen!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. tobb10001

    Benutzer, kostenlos Webspace Ketzer

    57 Gulden

    0 positive Bewertungen
    0

    tobb10001 hat kostenlosen Webspace.

    Hallo ekiam,
    Folgendes muss geprüft werden:
    Monat+Jahr+Checkbox-Feld gefüllt = Fehler
    Monat+Jahr+Checkbox-Feld nicht gefüllt = Fehler
    Monat+Jahr nicht geüllt aber Checkbox-Feld gefüllt = RICHTIG
    Monat+Jahr geüllt aber Checkbox-Feld nicht gefüllt = RICHTIG

    eigentlich müsste das relativ einfach gehen:
    if (/*checkbox gefüllt*/) {
        if (/*monat gefüllt oder (|) jahr gefüllt*/) {
            //Fehler
        } else {
            //Richtig
        }
    } else { //->checkbox nicht gefüllt
        if (/*monat && jahr gefüllt*/) {
             //Richtig
        } else {
            //Falsch
        }
    }

    Irgendwie bekomme ich das nicht hin, bin allerdings kein JS-Spezialist.

    Was du in JS dafür bracuhst sind nur das if-else-statement, dass sagt WENN Bedingung erfüllt DANN tue dass ANSONSTEN tue etwas anderes. Funktioniert wiefolgt:
    if (bedingung) {
       //Anweisung
    } else {
        //Abweichende Anweisung
    }

    Und die operatoren zum verknüpfen von Bedingungen:
    und-Verknüpfung (wenn BEIDE bedingungen wahr sind): && (SHIFT + 6)
    oder-Verknüpfung (wenn die eine, die andere ODER beide wahr sind): | (ALT GR + SPITZE KLAMMER (neben dem y)
    Ich hoffe dein Problem verstanden und dir geholfen zu haben...

    LG tobb10001
  4. noxious

    Kostenloser Webspace von noxious

    Benutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Stallbursche

    450 Gulden

    11 positive Bewertungen
    0

    noxious hat kostenlosen Webspace.

    Die ausgeweitete Form:
    var ergebnis = false;
    var monat_val       = document.getElementById('monat_id').value != "";
    var jahr_val        = document.getElementById('jahr_id').value != "";
    var checkbox_val    = document.getElementById('checkbox_id').checked;
    
    if(monat_val){
        if(jahr_val){
            if(!checkbox_val){
                ergebnis = true;
            }
        }
    }
    
    if(!monat_val){
        if(!jahr_val){
            if(checkbox_val){
                ergebnis = true;
            }
        }
    }
    
    if(ergebnis){
        ...
    }
    Kurze Erklärung. Ich setze als erstes das Ergebnis auf false, da es im wesentlichen mehr false-Fälle gibt, als true-Fälle. (Ich nehme an, wenn Jahr, aber nicht Monat und nicht Checkbox wäre es auch falsch, usw.) So sparst du dir, jeden abstrusen Falsch-Fall zu prüfen und änderst es nur, wenn es halt richtrig ist. Dann speicher ich die Fälle in variablen, dadurch erspare ich mir nicht nur ein wenig Tipparbeit, sondern - falls ich am Ende etwas an den Bedingungen ändern will, muss ich das nur ein mal im Code machen und es wird für alle Stellen, wo das abgefragt wird, geändert.
    Danach halt nur noch verschachtelte If-Abfragen, welche eigentlich selbsterklärend sein sollten.

    Nun kann man das ganze - um Platz zu sparen - natürlich noch zusammen fassen. So könnte man schreiben
    if((monat_val)&&(jahr_val)){
        if(!checkbox_val){
            ergebnis = true;
        }
    }
    Der &&-Operator überprüft, ob beide Aussagen wahr sind. Bzw. wenn ich mich nicht irre, ob die rechte Aussage mit der Linken übereinstimmt - was wichtig wäre, wenn man halt noch weiter auflösen will. Die Klammern lasse ich der Übersichtlichkeit halber mal drin, auch, wenn die nicht zwangsweise notwendig sind. So könnte man nun noch weiter auflösen:
    if(((monat_val)&&(jahr_val))&&(!checkbox_val)){
        ergebnis = true;
    }
    Das sollte ebenfalls funktionieren. So prüft er als erstes, ob
    monat_val
    und
    jahr_val
    wahr sind. Nehmen wir an, dem ist so, wird daraus dann ein
    if((true)&&(!checkbox_val))
    . Als nächstes prüft er, ob
    checkbox_val
    nicht wahr ist. Nehmen wir an, dem ist nicht so, wird daraus dann ein
    if((true)&&(true))
    Beim letzten kommt "wahr" bei rau, weil eben abgefragt wird, ob es nicht wahr ist - durch das
    !
    . Dann überprüft er, ob wahr und wahr wahr sind, woraus sich ergibt:
    if(true)
    . Und schon hast du drei Dinger auf ein mal geprüft.

    Dazu sei jedoch gesagt, dass es nicht immer Sinn macht, Dinge so zusammen zu fassen. Der Anspruch an Code sollte sein, dass er gut lesbar ist. Wenn jemand einen Blick auf den Code wirfst, sollte möglichst immer auf den ersten Blick offensichtlich sein, was gemeint ist. Dadurch entsteht gut wartbarer Code.
  5. tobb10001

    Benutzer, kostenlos Webspace Ketzer

    57 Gulden

    0 positive Bewertungen
    0

    tobb10001 hat kostenlosen Webspace.

    Dazu sei jedoch gesagt, dass es nicht immer Sinn macht, Dinge so zusammen zu fassen. Der Anspruch an Code sollte sein, dass er gut lesbar ist. Wenn jemand einen Blick auf den Code wirfst, sollte möglichst immer auf den ersten Blick offensichtlich sein, was gemeint ist. Dadurch entsteht gut wartbarer Code.

    Was dazu immer wesentlich beiträgt sind kommentare, damit auf "menschlich" nochmal festgehalten ist, was der Codeschnipsel macht/machen soll, da gibt es in Javascript die Möglichkeit mit
    /*abc*/
    zu deklarieren (das Komenntar geht bis zu den schließenden Zeichen) oder mit
    //abc
    das Kommentar geht bis zum Zeilenende.

    LG tobb10001
  6. noxious

    Kostenloser Webspace von noxious

    Benutzer, kostenlos WebspaceBenutzer, kostenlos Webspace Stallbursche

    450 Gulden

    11 positive Bewertungen
    0

    noxious hat kostenlosen Webspace.

    tobb10001 schrieb:
    Was dazu immer wesentlich beiträgt sind kommentare, damit auf "menschlich" nochmal festgehalten ist, was der Codeschnipsel macht/machen soll, da gibt es in Javascript die Möglichkeit mit
    /*abc*/
    zu deklarieren (das Komenntar geht bis zu den schließenden Zeichen) oder mit
    //abc
    das Kommentar geht bis zum Zeilenende.

    LG tobb10001
    Natürlich sind Kommentare ein gutes Mittel, um den Code auszuzeichnen. Aber es ist schwierig, da das richtige Maß zu finden. Ich für meinen Teil bevorzuge es, Kommentare bei eigenen Funktionen und Objekt-Methoden zu belassen, aber bei einfachen If-Conditions halte ich das meist einfach für übertrieben, alles zu kommentieren. Hier gilt es - meiner Meinung nach - eher darauf zu achten, dass der Code möglichst selbsterklärend ist. Also aussagekräftige Variablennamen, etc..

    Vor allem bei Javascript, wo die Datei ja (ohne ordentliches Caching schlimmstenfalls sogar bei jedem Aufruf) schließlich ausgeliefert werden muss, sollte man denke ich auch darauf achten, dass Kommentare eine große Javascript-Datei schnell mal 10-15-mal so groß werden lassen können. Da (leider) auch heute noch viele Menschen mit relativ begrenzer Bandbreite und Datenvolumen zu kämpfen haben, sollte man letztenendes darauf achten, dass man dem Nutzer, dem der Programmierhintergrund eigentlich nicht interessiert, keinen Bärendienst erweist.

    Ist aber wohl letztenendes eine Frage des Programmierstils und wird sicher von jedem ein wenig anders gehandhabt.
  7. tobb10001

    Benutzer, kostenlos Webspace Ketzer

    57 Gulden

    0 positive Bewertungen
    0

    tobb10001 hat kostenlosen Webspace.

    @noxious: Da muss ich dir rechtgeben. Es kommt eben auch stark darauf an, wer den Code liest: Ob man selbst der einzige ist oder es möglichst die ganze Informatik Schulklasse verstehen soll. Und wie vertraut man mit dem Thema ist, also ob man Code schon zum 100. Mal in leicht abgewandelter Form oder ein neues Problem selbst erst zu 50% versteht.

    LG tobb10001

    Beitrag zuletzt geändert: 11.1.2017 15:18:32 von tobb10001
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!