将文档实体传递给JavaScript函数

时间:2012-09-06 18:52:55

标签: javascript-events

这是一个基本问题(我认为),我很尴尬在这里问。它可能已经被回答,但我找不到我的搜索。

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

JavaScript函数:

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

我将此函数称为事件过程,例如,启用(this.Checked,“expJob”)并启用(this.Checked,“itemJob”),在下面的HTML中:

<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”参数。即使使用单引号也行不通。

所以问题是:这种方法有效吗?什么是正确的语法?

编写和使用此类函数的最佳方法是什么?我确信当必须迭代网格中的行时,将需要这样的函数使用。

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

2 个答案:

答案 0 :(得分:0)

  1. 您必须使用单引号('itemJob')
  2. 我认为OnCheckChanged是一个服务器事件。当你想使用它时,Asp.net需要一个处理程序。这就是你收到错误的原因。当您要发起客户端事件时,找到正确的客户端事件。负责触发回发,但默认为复选框是“无自动回发”。

答案 1 :(得分:-1)

请注意,javascript是区分大小写的 document.getElementById很好, document.getElementByID很糟糕(注意大写字母中的ID不好)