是否可以将onclick()事件应用于span标记?

时间:2012-01-18 21:30:46

标签: c# asp.net

为了确保正确编写事件处理程序,我通常会让Visual Studio为我生成事件。但是,我找不到用div做这个的方法,我试着自己输入它无济于事。如果没有编写任何JavaScript,这是否可行? (我看到了类似的问题,但似乎找不到符合我需要的任何东西)。

编辑:基本上我有一个注销div伪装成用户作为按钮。当他们点击它时,我希望发生以下情况:

 protected void LogOff_Click(object sender, EventArgs e)
    {
        FormsAuthentication.SignOut();
        Session.Abandon();

        //This will clear the authentication cookie
        HttpCookie myHttpCookie = new HttpCookie(FormsAuthentication.FormsCookieName, "");
        myHttpCookie.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(myHttpCookie);

        //This will clear the session cookie (not required for my application but applying to be safe)
        HttpCookie myHttpCookie2 = new HttpCookie("ASP.NET_SessionId", "");
        myHttpCookie2.Expires = DateTime.Now.AddYears(-1);
        Response.Cookies.Add(myHttpCookie2);

        FormsAuthentication.RedirectToLoginPage();
    }

以下是我称之为此事件的地方:

 <a href="Log_In.aspx"><span class="MenuItem" runat="server" onclick="LogOff_Click">Log Off</span></a>

5 个答案:

答案 0 :(得分:8)

您的LogOff_Click没问题。但是,您需要修改标记。将onserverclick事件应用于<a>标记,而不是<span>。在您的情况下,请尝试以下方法:

 <a href="Log_In.aspx" runat="server" onserverclick="LogOff_Click"><span class="MenuItem">Log Off</span></a>

答案 1 :(得分:6)

描述

div元素支持javascript事件onclick,因此您可以执行此操作。 您可以通过查看w3c shools tag definition来检查html元素是否支持给定事件。

我不清楚你究竟是什么意思。你可以在客户端使用javascript做很多事情。 onclick是javascript,但您也可以使用服务器端重定向(ASP.NET Webforms上的回发)。使用javascript做的事情是,没有做ajax,服务器不明显,导致javascript被浏览器处理。

查看我的示例和此jsFiddle Demonstration

<div>代码

的示例

<强> HTML

<div onclick="alert('hello');">hello world</div>

更多信息

答案 2 :(得分:2)

如果您想继续使用ASP.NET,可以使用Panel控件并执行以下操作:

<强>标记

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Panel runat="server" ID="pan1">click here</asp:Panel>
    </div>
    </form>
</body>

代码背后

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        pan1.Attributes.Add("onclick", "javascript:alert('here');return false;");
    }
}

您仍然在编写JavaScript,但您仍然使用ASP.NET控件和ASP.NET设置客户端事件的方式。

我实际上更喜欢dknaack和Silvertiger的方法 - 将事件放在客户端代码中(最好是javascript文件而不是内联)。

答案 3 :(得分:0)

标准DOM和CSS将允许此

<div style="cursor:hand;" onclick="this.document.location.href ='http://www.google.com';">
    My content
</div>

应该做的伎俩

答案 4 :(得分:0)

不确定您打算做什么。触发onclick事件时,您需要在触发事件时调用处理程序。这是通过Javascript完成的。

您可以在JavaScript中执行表单提交,或在Javascript中触发Ajax回调,以与.NET应用程序进行交互。

回答原始问题,可以通过<div>标记触发onclick事件。确保您针对Internet Explorer 7/8(兼容模式)进行测试,因为并非所有事件都在IE 7/8中运行。在Firefox,Chrome和IE9中应该没问题。将其保存在文件和实验中。

<html>
<head>
<script type="text/javascript">
function JSFn()
{
   //you can use the div ID if needed: var id = document.getElementById('div_id');
   alert("JSFn was called");
   //Can do form submit or Ajax callback to interact with .NET app

}
</script>
</head>
<body>
<div>
<a id="anchor1" href="javascript:JSFn();">Make a clickable link here, you can use onclick and href='#'  </a>
</div>

<div id="div_id2" onclick="JSFn()">Just click here </div>

</body>
</html>