0

这是一个初级问题(我认为),不好意思在这里问。它可能已经被回答了,但我找不到我的搜索。

在最简单的形式中,有两个复选框,每个 CheckBox 都有一个与之关联的控件(例如,TextBox 或 DropDownList)。当 CheckBox 的选中状态发生变化时,必须启用或禁用关联的控件。

JavaScript 函数:

<script type="text/javascript:>
function enable(bValue, control)
{
   document.getElementByID(control).Enabled = bValue;
}
</script>

在下面的 HTML 中,我将此函数称为事件过程,例如 enable(this.Checked, "expJob") 和 enable(this.Checked, "itemJob"):

<body>
    Billable? <asp:CheckBox ID="expBillable" runat="server" Checked="false" OnCheckedChanged="enable(this.Checked, "expJob");" />
    to <asp:DropDownList ID="expJob" runat="server" Enabled="true" />
    <br /><br />
    Billable? <asp:CheckBox ID="itemBillable" runat="server" Checked="false" OnCheckedChanged="enable(this.Checked, "itemJob");" />
    to <asp:DropDownList ID="itemJob" runat="server" Enabled="true" />

问题是,由于使用了引号,我无法在 HTML 中指定“expJob”参数。即使使用单引号也不起作用。

那么问题来了:这种方法行得通吗?什么是正确的语法?

编写和使用这样的函数的最佳方法是什么?我确信在必须遍历网格中的行时需要使用这种函数。

有趣的是,我看到的所有问题/答案都使用了控件的 disabled 属性。我只能使用 Enabled 属性。有人可以解释为什么,有什么区别?

4

2 回答 2

0
  1. 您必须使用单引号 ('itemJob')
  2. 我认为 OnCheckChanged 是一个服务器事件。当你想使用它时,Asp.net 需要在后面的代码中有一个处理程序。这就是你收到错误的原因。当您想要触发客户端事件时,请找到正确的客户端事件。注意触发回发,但复选框的默认值无论如何都是“不自动回发”。
于 2012-10-06T10:00:17.573 回答
-1

请注意,javascript 区分大小写,所以 document.getElementById好, document.getElementByID不好(注意大写的 ID 不好)

于 2013-11-04T17:32:30.127 回答