javascript - 当中继器内未选中复选框时禁用文本框

标签 javascript c# jquery asp.net asprepeater

在我的 .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);
    });
}

但是仍然不起作用。

最佳答案

这是因为控件的 id 属性是在渲染时自动生成的;它不会是客户端的chkNormalServiceCost。您需要为其设置 ClientID 属性:

<asp:CheckBox runat="server" ID="chkNormalServiceCost" ClientID="chkNormalServiceCost" Checked="true" />
<asp:TextBox runat="server" ID="txtNormalServiceCost" ClientID="txtNormalServiceCost" />

然后,您可以使用 jQuery 添加点击处理程序,而不是在第一次 click 触发后附加 change 事件:

$('#chkNormalServiceCost').change(function () {
    $('#txtNormalServiceCost').prop('disabled', !this.checked);
});

Example fiddle

关于javascript - 当中继器内未选中复选框时禁用文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29121055/

相关文章:

javascript - Angular ng-show 不根据函数返回值显示/隐藏

javascript - jQuery 选择动态元素

javascript - 如何使用 for (let obj of objects) 获取数组中的下一项

c#检测文件是否写入完成

c# - 使用 linq 赋值

javascript - 您如何检测异步 couchdb 事件的完成?

javascript - Vue.js 动态组件不会改变

javascript - location.href 仅适用于 Chrome

c# - 在缩略图上创建 'iPhone style icon' 效果?

javascript - 将页面上的一堆输入存储到 JavaScript 数组中?