Autor Zpráva
Monkeys
Profil *
Ako vyriesit tuto cast kodu v ktorej prepinam disabled tlacitko do enabled ale problem vznika ked napr. oznacim 2 checkboxi a potom jeden odznacim (teda jeden ostane oznaceny), ale tlacitko sa mi vrati do disabled neviem kde robim chybu.

(function(){
//disabled / enabled button    
$("#prepinac, .prepni").click(function() {  
var checked_status = this.checked;
if (checked_status == true) { 
$("#vymaz").removeAttr("disabled"); 
} else {  
$("#vymaz").attr("disabled", "disabled");
}
}); 
}); 

Dakujem
_es
Profil
Monkeys:
$("#vymaz").removeAttr("disabled");
Čo by to malo spraviť? Objektu tlačítka treba nastavovať vlastnosť disabled na true alebo false.

oznacim 2 checkboxi a potom jeden odznacim (teda jeden ostane oznaceny), ale tlacitko sa mi vrati do disabled neviem kde robim chybu.
Asi v logike aplikácie. Rozmysli si, čo, kedy, a koľko krát, sa vykoná.
Monkeys
Profil *
_es:
#prepinac - je hlavny checkbox ktorym označim alebo odznacim vsetky ostatne checkboxi.
.prepni - to su jednotlive checkboxi

Čo by to malo spraviť?
Prepina to tlacitko do nepristupneho stavu - Tento riadok funguje takze by to malo byt v poriadku

Toto je kod ktorym oznacujem ostatne checkboxi
    
$("#prepinac").click(function () {  
    $('.prepni').attr('checked', this.checked);    
    }); 
    
    $(".prepni").click(function(){          
    if($(".prepni").length == $(".prepni:checked").length) { 
    $("#prepinac").attr("checked", true);         
    } else {            
    $("#prepinac").removeAttr("checked");         
    } 
    });     
_es
Profil
Monkeys:
if($(".prepni").length == $(".prepni:checked").length)
O tejto časti kódu mám pochybnosti.

Viď aj Doporučuji užívat standardní vlastnosti HTML DOMu místo getAttribute/setAttribute
Sprav to nejako normálnejšie cez skutočné vlastnosti checked a disabled a nie cez hentie jQuery zlepšováky.
Monkeys
Profil *
Mordujem sa stym odrana a neviem stym pohnut.

Dokazem spravit udalost na jeden prepinac ale ako som uz pisal oznacim viacej boxov a po odznaceni jendeho sa tlacito vrati do disabled aj ked su oznacene ostatne boxi.

skusil som nieco taketo cez cyklus each ale aj tak to nefunguje.

$("#prepinace .toggle").each(function(){ // najdeme vsetky boxy
        var prep = $(this).attr('checked', false); //boxom dame false nadstavenie (neodskrknute)
    prep.click(function(){ // po kliknuti na box 
    var prepinac = this.checked; // ak je box oznaceny
    if(prepinac == true){ // ma hodnotu true (je odskrknuty )
        $("#vymaz").removeAttr("disabled"); // tlacitoko daj do enabled
    }else{
        $("#vymaz").attr("disabled", "disabled"); // vratit do disabled
    }
    });
    })
Mysleinka bola tak ze cyklusom sa aktualizuju vsetky boxy ale myslienka zlyhala :)
_es
Profil
Monkeys:
Prečo do toho, napriek rade, stále montuješ metódy jQuery na prístup k atribútom? Ide o maskované getAttribute/setAttribute. Použi len vlastnosti checked a disabled, nepouži jQuery metódy attr a removeAttr.
Monkeys
Profil *
_es:
Hmm tak to rovno mozem ostat pri JS a neucit sa kniznicu jQuery. Ked mi radis aby som polovicu z tych veci vypustil. Neviem sa bez toho pohnut ked mam ostat pri jQuery.
Monkeys
Profil *
No dosiel som nato nakoniec :)
Funguje pekne

Podelim sa ak by sa stym v buducnosti niekto trapil.
                $("#prepinace .toggle").click(function(){
    var p = $(this).is(':checked'),
    v = $(this).siblings('.toggle:checked');
    //oznacit jednotlivo
    $('.toggle:checkbox').change(function(){
        if(this.checked){
            $("#vymaz").removeAttr("disabled"); 
        }
        });
    // zachovat oznacene ak sa jedna o posledny box znepristupnit tlacitko
    if($(".toggle:checked").length == v.length) { 
     if(p == true){
    $("#vymaz").removeAttr("disabled"); 
     }else{ 
    $("#vymaz").attr("disabled", "disabled"); 
    }
    }
    });
_es
Profil
Monkeys:
Hmm tak to rovno mozem ostat pri JS a neucit sa kniznicu jQuery.
Časté potíže, zajímavosti a poučné debaty » Co vlastně je jQuery?
To, že do stránky natiahneš jQuery, neznamená, že musíš použiť metódy jQuery na daný účel nevhodné - attr a removeAttr. Ešte by bolo dobré ten tvoj kód otestovať vo viacerých prehliadačoch.
Monkeys
Profil *
_es:
Ešte by bolo dobré ten tvoj kód otestovať vo viacerých prehliadačoch.

Testované v IE, Mozila, Opera - bez problemov

M.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: