2012-02-14 72 views
3

我知道这是一个非常普遍的问题。我试图得到一个“回车键”事件来通过javascript调用页面上某个按钮的点击。然而,我不能在我的生活中从我的asp.net页面通过其id或名称获取单个元素。Javascript无法GetElementById在ASP.NET C#

这是我的理解,这个问题是相关的JavaScript位于何处,以及是否元素已被呈现的时间加载的JavaScript或这种性质的东西?

每次我尝试使用var x = document.getElementById('btn_AddAdmin')时,我都会得到一个空值。

我的asp.net页面有它继承的SiteMaster页面。我已经包含了我的asp.net页面和SiteMaster页面的修剪版本。

ASP.NET页:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" 
    AutoEventWireup="true" CodeBehind="Admin.aspx.cs" Inherits="HERMES.Admin" %> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<input type="text" id="txt_AddAdmin" runat="server" onkeypress="Populate()" /> 

母版页:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" 
     Inherits="HERMES.SiteMaster" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head runat="server"> 
    <title></title> 
    <link href="./Styles/Site.css" rel="stylesheet" type="text/css" /> 
    <asp:ContentPlaceHolder ID="HeadContent" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form runat="server"> 
</form> 
</body> 

很抱歉的格式,我好像做错了什么......

我试图放置JavaScript在很多不同的位置 - 从sitemaster页面到asp.net页面的顶部和底部。这两种方式都没有运气

+2

要回答你的第一个问题,是的,document.getElementById的位置很重要。您需要在ID为“btn_AddAdmin”的元素已由网络浏览器呈现或您知道dom已准备就绪后调用此方法。从你的问题中不清楚你的JavaScript包含在哪里。我只能看到当使用id txt_AddAdmin输入文本时,调用函数“Populate()”。我建议你在这里发布你呈现的html页面的源代码。也许使用http://jsfiddle.net/使事情变得更容易。 – 2012-02-14 21:05:21

+0

我试图根据我的评论中的最后一行重新定位JavaScript代码,并且它不管用。然而,@ Xander已经涵盖了问题所在。还是)感谢你的建议! – ImGreg 2012-02-14 21:10:28

回答

6
var x = document.getElementById('<%= btn_AddAdmin.ClientID %>'); 

如果你的按钮是Server Control它预先考虑命名方案的input按钮,以便它可以在postback绑定回合适的服务器控件。因此需要使用ClientID属性来检索“呈现的id”。

欲了解详情,请访问:

谷歌将其与冰:

  • 的clientid
  • ASPNET WebForms的客户端编程
+0

哇,实际上工作。为什么这种方法有效,而不是其他方法? – ImGreg 2012-02-14 20:58:28

+2

@ImGreg - 服务器端控件(其中一个具有'runat =“server”'属性)的'id'属性表示控件的_server side_ ID,供C#后面的代码使用。这种控件的'ClientId'属性是发射的'id',因为它会出现在浏览器中供javascript使用。 – Oded 2012-02-14 21:00:26

+0

Gottcha。这就说得通了。不过,我显然需要阅读更多内容才能更好地理解这些内容的工作原理。任何相关的阅读链接?再次感谢btw。 – ImGreg 2012-02-14 21:02:24