jQuery z ASP.NET WebForms - wyłączanie pól tekstowych
Kolejne pytanie jQuery noob - co robię źle?
Mam pewne znaczniki HTML renderowane przez formularze WWW ASP.NET 3.5, które wyglądają tak:
<input id="ctl01_cphContent_pnlBasicInfo_chkRC"
type="checkbox" name="ctl01$cphContent$pnlBasicInfo$chkRC" />
<label for="ctl01_cphContent_cntPromos_pnlBasicInfo_chkRC">Recurrent Charges</label>
<span id="ctl01_cphContent_cntPromos_pnlBasicInfo_lblPromoValidFor"
class="rcPromo">Validity:</span>
<span class="rcPromo">
<input id="ctl01_cphContent_pnlBasicInfo_rbnDiscountValidFor"
type="radio" name="ctl01$cphContent$pnlBasicInfo$discountValidFor"
value="rbnDiscountValidFor" checked="checked" />
<label for="ctl01_cphContent_cntPromos_pnlBasicInfo_rbnDiscountValidFor">valid for</label>
</span>
<span class="rcPromo">
<input id="ctl01_cphContent_pnlBasicInfo_rbnDiscountValidUntil"
type="radio" name="ctl01$cphContent$pnlBasicInfo$discountValidFor"
value="rbnDiscountValidUntil" />
<label for="ctl01_cphContent_cntPromos_pnlBasicInfo_rbnDiscountValidUntil">valid until</label>
</span>
<input name="ctl01$cphContent$pnlBasicInfo$txtDiscountMonths" type="text"
id="ctl01_cphContent_pnlBasicInfo_txtDiscountMonths"
class="textbox" class="rcPromo" originalValue="" style="width:30px;" />
<span id="ctl01_cphContent_cntPromos_pnlBasicInfo_lblMonths" class="rcPromo"></span>
<input name="ctl01$cphContent$pnlBasicInfo$txtDiscountUntil" type="text"
id="ctl01_cphContent_pnlBasicInfo_txtDiscountUntil"
class="textbox" class="rcPromo" originalValue="" style="width:150px;" />
Mam zaznaczone „chkRC”, które chcę pułapkować i używać do włączania / wyłączania innych kontrolek interfejsu użytkownikaMam kilka etykiet, kontrolki interfejsu użytkownika (typ = radio) i wejściowe (typ = tekst). Wszystkie są oznaczone klasą CSS „rcPromo”Mam klasę CSS o nazwie „textbox” dla normalnego pola tekstowego i „textboxDisabled” dla wyłączonego stanu pola tekstowego, w zewnętrznie odwoływanym pliku CSS, który działa poprawnie (gdy jest używany w kodzie po stronie serwera, czyli)W jQuery staram się to osiągnąć: gdy pole wyboru „chkRC” jest wyłączone, chcę wyłączyć wszystkie odpowiednie kontrolki interfejsu użytkownika.
Mój jQuery wygląda tak:
$(document).ready(function() {
$("#<%= chkRC.ClientID %>").click(function() {
$('.rcPromo > :label').toggleClass('dimmed');
if (this.checked) {
$('.rcPromo').removeAttr('disabled');
$('.rcPromo .textboxDisabled').addClass('textbox').removeClass('textboxDisabled');
}
else {
$('.rcPromo > :input').removeAttr('checked');
$('.rcPromo .textbox').addClass('textboxDisabled').removeClass('textbox');
$('.rcPromo').attr('disabled', true);
}
});
});
Działa dobrze dla etykiet i radiobuttonów - ale po prostu nie mogę zmusić go do pracy z polami tekstowymi - po prostu pozostają takie same dookoła, nic się nie zmienia (nie zostają wyłączone i nie zmieniają swojego wyglądu na wskazują również, że są wyłączone).
Nie rozumiem tego - widzę kilka (kilka więcej niż w próbce) pól tekstowych, które są<input type="text">
w HTML i mająclass="rcPromo"
iclass="textbox"
na nich - więc dlaczego jQuery nie znajduje ich i nie aktualizuje?
Jakieś pomysły?
Marc