0

我有这样的功能:

<script type="text/javascript" >
    function postBack(e) {
        var lnk=document.getElementById('<%=e.getAttribute("ClientID") %>');
        lnk.click();
    };
</script>

并有一个这样的链接按钮:

<asp:LinkButton onfocus="postBack(this);" id="lnk_home" runat="server" 
     AccessKey="h" onclick="lnk_home_Click">Home</asp:LinkButton>

我想在按 Alt+h 时重定向页面,但它不起作用。按 Alt+h 时出现以下错误:

[编译器错误消息:CS0103:当前上下文中不存在名称“e”]

有关如何解决此问题的任何建议?谢谢

更新**服务器端代码:

protected void lnk_home_Click(object sender, EventArgs e)
    {

        home home_view = LoadControl("home.ascx") as home;
        Panel pnl_view = (Panel)ContentPlaceHolder1.FindControl("pnl_view");
        //pnl_view.Controls.Clear();
        pnl_view.Controls.Add(home_view);
    }
4

1 回答 1

1

您不需要单独的 JavaScript 函数,只需使用this.click()

<asp:LinkButton onfocus="this.click()" id="lnk_home" runat="server"  AccessKey="h" onclick="lnk_home_Click">Home</asp:LinkButton>

或者,如果您确实想使用单独的函数(可能在多个 LinkBut​​tons 上执行一些通用例程)调用click method传递的对象本身:

<asp:LinkButton onfocus="postBack(this);" id="lnk_home" runat="server" AccessKey="h" onclick="lnk_home_Click">Home</asp:LinkButton>

<script type="text/javascript" >
    function postBack(oLink) {
        // some common code
        oLink.click();
    };
</script>

更新当您实际使用鼠标单击链接时 - 事件可能会触发两次,因此您需要将其限制为单击一次:

<asp:LinkButton onfocus="this.AllowClick=true;this.click();" OnClientClick="if (this.AllowClick) {this.AllowClick=false} else {return false}"  id="lnk_home" runat="server"  AccessKey="h" onclick="lnk_home_Click">Home</asp:LinkButton>
于 2013-08-02T16:57:14.580 回答