Marco: Checkbox - Häkchen setzen bzw. entfernen

Hallöle :)

Ich hab ein kleines Problem welches sich wie folgt darstellt:

Eine Checkbox im Formular soll signalisieren ob die Lieferanschrift abweicht oder nicht. Deshalb soll ein ein neuer Layer auf"poppen" in dem die Lieferanschrift eingegeben werden kann. Dass dieser Layer auch im IE aufpoppt musste ich das über einen Link und nicht über die Checkbox selber lösen.

Wird dieser Link angeklickt möchte ich prüfen lassen ob die Checkbox ein Häkchen hat bzw. nicht. Ist keines vorhanden soll eines gesetzt werden bzw. eben nicht.

Gelöst habe ich dies mit folgender Funktion:

  
function aktiviere()  
    {  
        klick = (document.BestellForm.Lieferanschrift.checked == 'false') ? 'true' : 'false';  
        document.BestellForm.Lieferanschrift.checked = klick;  
    }  

Ist kein Häkchen gesetzt funktioniert das einwandfrei und der Haken erscheint in der Checkbox. Doch wenn ich den Link dann wieder anklicke, so dass das Häkchen ja wieder verschwinden müsste passiert dies nicht.:dozey:

Habe ich einen Denkfehler gemacht oder wie könnte ich das lösen?

Habe die Funktion auch schon ausgeschrieben - sprich mit if und else - jedoch kam dies zu selbem Ergebnis ... mist.

Ich bin jetzt auf eure Hilfe angewiesen und verlasse mich da mal auf euch ;)

Dank im Voraus.

  1. Hi,

    klick = (document.BestellForm.Lieferanschrift.checked == 'false') ? 'true' : 'false';
            document.BestellForm.Lieferanschrift.checked = klick;

    
    >   
    > Ist kein Häkchen gesetzt funktioniert das einwandfrei und der Haken erscheint in der Checkbox. Doch wenn ich den Link dann wieder anklicke, so dass das Häkchen ja wieder verschwinden müsste passiert dies nicht.:dozey:  
      
    Du weist in jedem Fall einen im Boole'schen Sinne wahren Wert zu, nämlich einen String, der nicht leer ist. Warum benutzt Du nicht statt dessen die Werte true und false?  
      
    Übrigens ist bereits die Prüfung falsch, die checked-Eigenschaft enthält niemals einen String.  
      
    Cheatah  
    
    -- 
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|  
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html  
    X-Will-Answer-Email: No  
    X-Please-Search-Archive-First: Absolutely Yes
    
    1. Ja, genau das war das Problem, einfach die Anführungsstriche weg und e voila, es geht.

      Sorry für die Dummheit, aber man kann nicht alles wissen und ich schreibe wirklich nur klitzekleine Programm - oftmals die selben - in JS, da kommt man selten über seinen Horizont hinaus.

      Nun weiß ich es besser, auch für die Zukunft.

      Vielen Dank dir.

      Gruß, Marco

      1. Hi Marco!

        Nehmen wir mal an, du hast die Anführungszeichen eliminiert:

        function aktiviere() {  
                klick = (document.BestellForm.Lieferanschrift.checked == false) ? true : false;  
                document.BestellForm.Lieferanschrift.checked = klick;  
            }
        

        Wenn "document.BestellForm.Lieferanschrift.checked" falsch ist, "document.BestellForm.Lieferanschrift.checked == false" also wahr ist, dann wird "klick" wahr, ansonsten falsch.

        Wieso nicht gleich:

        function toggleCheckbox() {  
                document.BestellForm.Lieferanschrift.checked = !document.BestellForm.Lieferanschrift.checked;  
            }
        

        Beachte auch den geänderten Funktionsnamen.

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  2. Mahlzeit Marco,

    Eine Checkbox im Formular soll signalisieren ob die Lieferanschrift abweicht oder nicht. Deshalb soll ein ein neuer Layer auf"poppen" in dem die Lieferanschrift eingegeben werden kann. Dass dieser Layer auch im IE aufpoppt musste ich das über einen Link und nicht über die Checkbox selber lösen.

    Warum? So weit ich weiß, beherrscht der IE http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onclick@title=onclick und http://de.selfhtml.org/javascript/objekte/style.htm#style_eigenschaften@title=style.display nahezu tadellos ...

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|