Отключить текстовое поле, когда флажок не установлен внутри повторителя
В моем.aspx следующие элементы находятся внутри повторителя:
<asp:CheckBox runat="server" ID="chkNormalServiceCost" Checked="true" OnClick="EnableDisableTextBox()"/>
<asp:TextBox runat="server" ID="txtNormalServiceCost" />
И в <script>
тег есть функция jQuery:
function EnableDisableTextBox() {
$('#chkNormalServiceCost').change(function () {
if ($('#chkNormalServiceCost').is(':checked') == true)
$('#txtNormalServiceCost').prop('disabled', false);
else
$('#txtNormalServiceCost').prop('disabled', true);
});
}
Но все равно это не работает.
3 ответа
Это потому что id
свойство генерируется автоматически при его отображении; это не будет chkNormalServiceCost
на стороне клиента. Вам нужно установить ClientID
свойство на это вместо:
<asp:CheckBox runat="server" ID="chkNormalServiceCost" ClientID="chkNormalServiceCost" Checked="true" />
<asp:TextBox runat="server" ID="txtNormalServiceCost" ClientID="txtNormalServiceCost" />
Оттуда вы можете добавить обработчик кликов, используя jQuery вместо того, чтобы прикреплять change
событие после первого click
был уволен:
$('#chkNormalServiceCost').change(function () {
$('#txtNormalServiceCost').prop('disabled', !this.checked);
});
Используйте OnClientClick="EnableDisableTextBox()" вместо OnClick
<asp:CheckBox runat="server" ID="chkNormalServiceCost" Checked="true" OnClientClick="EnableDisableTextBox()"/>
Попробуй это
function EnableDisableTextBox() {
if ($('#<%= chkNormalServiceCost.ClientID%>').is(':checked') == true)
$('#<%= txtNormalServiceCost.ClientID%>').prop('disabled', false);
else
$('#<%= txtNormalServiceCost.ClientID%>').prop('disabled', true);
}