jQuery con ASP.NET WebForms - deshabilitando cuadros de texto
Otra pregunta de jQuery noob: ¿qué estoy haciendo mal?
Tengo un marcado HTML renderizado por formularios web ASP.NET 3.5 que se ve así:
<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;" />
Tengo un "chkRC" marcado que quiero capturar y usar para habilitar / deshabilitar otros controles de UITengo un número de etiquetas, entrada (tipo = radio) y entrada (tipo = texto) controles de UI. Todos estos están marcados con la clase de CSS "rcPromo"Tengo una clase de CSS llamada "cuadro de texto" para el cuadro de texto normal y "cuadro de texto deshabilitada" para el estado deshabilitado del cuadro de texto, en un archivo CSS con referencia externa, que funciona bien (cuando se usa en el código del lado del servidor).Lo que estoy tratando de lograr en jQuery es esto: cuando la casilla de verificación "chkRC" está desactivada, quiero desactivar todos los controles relevantes de la interfaz de usuario.
Mi jQuery se ve así:
$(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);
}
});
});
Funciona bien para las etiquetas y los botones de radio, pero no puedo hacer que funcionen con los cuadros de texto, simplemente permanecen igual, no cambia nada (no se deshabilitan y no cambian su apariencia a indicar que están deshabilitados, tampoco).
No entiendo esto, veo varios cuadros de texto (algunos más que en la muestra), que son<input type="text">
en HTML, y tienen laclass="rcPromo"
yclass="textbox"
en ellos, así que ¿por qué jQuery no los encuentra y los actualiza?
¿Algunas ideas?
Bagazo