在我的.aspx中,以下元素位于Repeater中:
<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);
});
}
但它仍然无法正常工作。
答案 0 :(得分:1)
这是因为控件&#39; 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);
});
答案 1 :(得分:0)
试试这个
function EnableDisableTextBox() {
if ($('#<%= chkNormalServiceCost.ClientID%>').is(':checked') == true)
$('#<%= txtNormalServiceCost.ClientID%>').prop('disabled', false);
else
$('#<%= txtNormalServiceCost.ClientID%>').prop('disabled', true);
}
答案 2 :(得分:0)
使用OnClientClick =&#34; EnableDisableTextBox()&#34;而不是OnClick
<asp:CheckBox runat="server" ID="chkNormalServiceCost" Checked="true" OnClientClick="EnableDisableTextBox()"/>