Autor Zpráva
krejcimara
Profil
Zdravím všechny,

jsem začátečník v Jquery, mám 7 checkboxů a vedle nich 7 inputů, chtěl bych je při načtení stránek otestovat, které jsou checked a které ne a na základě toho chci přidružené inputy nechat disabled nebo enabled. Trápím se stím dva dny a nevím jak nato. Věřím, že to je prkotina, prosím o radu.
A pak při kliknutí na checkboxy se zase přidružený input nastavit na enabled nebo disabled. Jedná se o formulář.
$("input.cisla").attr("disabled",true); // při document ready nastavím všem inputům atribut disabled - true
// tady bych chtěl otestovat checkboxy a přiřadit inputům atribut a podle toho val() na 1 nebo nic.
// inputy a checkboxy mám svázané třídou 'pití + $i'
Tady je výpis při tom kliknutí:
$("div.sloupek input:checkbox").click(function(){
    
        if (this.checked == true) {
               
           $("." + $(this).attr("class")).prop("disabled",false).val(1);
        } else $("." + $(this).attr("class")).prop("disabled",true);
    
    });
To funguje jen pokud na začátku checkbox není nastaven na checked. Pokud je checked a kliknu naňho nastaví se na unchecked, ale pak při dalším kliknutí se již nenastaví na checked. A tím pádem již nefunguje na přidružený input nastavení atributů.

Moc děkuji za tipy, nemusíte tu psát přímo hotový algoritmus, stačí poradit jak nato:)
smitka
Profil
Bez html kódu se dost špatně odhaduje, co mělo dělat to "." + $(this).attr("class"). Zde bych tušil problém, že to vybere i samotný checkbox a tím ho disabluje (klik sice funguje, ale checked se nezmění). Každopádně, pokud jsou checkboxy a inputy "vedle" sebe, tak bych na to šel nějak takto:

http://jsfiddle.net/rs862zqx/

Nebo univerzálněji s pojmenovanými třídami:

http://jsfiddle.net/6a42zz1j/
krejcimara
Profil
smitka:
Zde je jeden ze sedmy bloků

<div class="radek">
    
        <div class="sloupek">
            <span class="checkboxcisla"><input type="checkbox" class="piti2" id="piti2" name="piti[]" value="2" checked>
            <label for="piti2">Semtex -  0,25l plech</label></span>
         </div>
         <div class="sloupek">33,-</div>
         <div class="sloupek">kusů</div>
         <div class="sloupek"><input type="number" min="1" max="20" name="pocet[]" class="cisla piti2"   value="1"></div>
     </div>



smitka:
Ten druhý kód se mi zamlouvá, a máš pravdu vypne to i ten checkbox :)


smitka:
Trochu jsem poupravil tvůj kód a nefakčí to :(

 $("span.checkboxcisla input:checkbox").click(function(){
        if (this.checked == true) {
            $(".piti"+this.value).prop("disabled",false).val(1);
        } else $(".piti"+this.value).prop("disabled",true);
    
    });



smitka:
Funguje první checkbox, čtvrtý, šestý a sedmý, ostatní nee, to nechápu :D

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: