【问题标题】:enable asp.net button using javascript使用 javascript 启用 asp.net 按钮
【发布时间】:2014-02-10 02:23:11
【问题描述】:

我有这个应用程序,我想在其中使用 javascript 启用 asp.net 按钮。 JavaScript 代码:

function Enable() {
  document.getElementById('<%= Begin.ClientID %>').disabled = false;
}

Asp 按钮:

<asp:Button ID="Begin" runat="server" Text="Submit" OnClick="Button1_Click"/>

我正在使用 ClientScriptBlock 调用 Enable 函数:

protected void Page_Load(object sender, EventArgs e)
{
  Begin.Enabled = false;
  ClientScript.RegisterClientScriptBlock(GetType(), "EnableButton", "Enable();", true);
}

但是当我运行应用程序时出现错误:

0x800a138f - Microsoft JScript 运行时错误:'document.getElementById(...)' 为空或不是对象

谁能帮我解决这个问题?

我想检查一下用户是否在浏览器上激活了 JavaScript。如果 JavaScript 未启用,按钮将保持禁用状态。

【问题讨论】:

  • 如果您尝试使用RegisterStartupScript 而不是RegisterClientScriptBlock 会怎样?
  • 你能在 rendered ASPX 页面中看到按钮的 HTML 标记是什么样的吗?另外,你的 JavaScript 函数是嵌入到 ASPX 文件中还是在单独的 JS 文件中?
  • 您的 JavaScript 代码是否在单独的 .js 文件中?
  • @ Yuriy Galanter 你的意思是:&lt;input type="submit" name="Submit" id="Begin" /&gt; ?
  • @Darin Dimitrov 感谢我将 js 代码放在标头中并且可以正常工作

标签: c# javascript jquery asp.net


【解决方案1】:

似乎 javascript 代码被放置在一个单独的 javascript 文件中。但是您似乎在其中使用了一些 &lt;% %&gt; 服务器端标签,这些标签显然不会被处理。这些标签仅在您的 ASPX 页面内有效。所以我想在你的 ASPX 页面中你需要声明一个变量:

<script type="text/javascript">
    var beginClientId = '<%= Begin.ClientID %>';
</script>

然后在您单独的 .js 文件中,您可以使用它:

function Enable() {
  document.getElementById(beginClientId).disabled = false;
}

或者,如果您使用的是 ASP.NET 4.0,请转至 static or predicatble ids:

<system.web>
    <pages clientIDMode="Static"></pages>
    <compilation debug="true" targetFramework="4.0" />
</system.web>

【讨论】:

  • 如果我使用这个我得到0x800a1391 - Microsoft JScript runtime error: 'beginClientId' is undefined错误
  • 那是因为你需要在你的脚本 AFTER 中包含声明全局变量的部分。但最好使用静态 ClientId。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 1970-01-01
相关资源
最近更新 更多