jQuery mit ASP.NET WebForms - Deaktivieren von Textfeldern
Noch eine jQuery noob Frage - was mache ich falsch?
Ich habe einige HTML-Markups, die von ASP.NET 3.5-Webforms gerendert wurden und folgendermaßen aussehen:
<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;" />
Ich habe ein Häkchen bei "chkRC" gesetzt, das ich abfangen und zum Aktivieren / Deaktivieren anderer UI-Steuerelemente verwenden möchteIch habe eine Reihe von Beschriftungen, Eingabe (Typ = Radio) und Eingabe (Typ = Text) UI-Steuerelemente. Diese sind alle mit der Dummy-CSS-Klasse "rcPromo" gekennzeichnetIch habe eine CSS-Klasse mit dem Namen "textbox" für das normale Textfeld und "textboxDisabled" für den deaktivierten Status des Textfelds in einer extern referenzierten CSS-Datei, die einwandfrei funktioniert (wenn sie im serverseitigen Code verwendet wird).In jQuery möchte ich Folgendes erreichen: Wenn das Kontrollkästchen "chkRC" deaktiviert ist, möchte ich alle relevanten Steuerelemente der Benutzeroberfläche deaktivieren.
Meine jQuery sieht so aus:
$(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);
}
});
});
Es funktioniert gut für die Beschriftungen und die Radiobuttons - aber ich kann es einfach nicht für die Textfelder verwenden - sie bleiben einfach überall gleich, nichts ändert sich (sie werden nicht deaktiviert und sie ändern ihr Aussehen nicht in zeigen an, dass sie entweder deaktiviert sind).
Ich verstehe das nicht - ich sehe mehrere (ein paar mehr als im Beispiel) Textfelder, die sind<input type="text">
in HTML, und sie haben dieclass="rcPromo"
undclass="textbox"
Warum findet und aktualisiert jQuery diese nicht?
Irgendwelche Ideen?
Marc