Button按钮第一次点击为什么不能触发事件中的js代码。
代码如下
aspx代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default1.aspx.cs" Inherits="_Default" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>demo</title>
</head>
<body>
<form action="" runat="server">
<div>
<asp:HiddenField ID="HiddenField1" runat="server" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Button" />
</div>
</form>
</body>
</html>
cs代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
Button2.Attributes.Add("onclick", "if(confirm('aa')){document.getElementById('HiddenField1').value='true';}else{document.getElementById('HiddenField1').value='false';}");
Response.Write(this.HiddenField1.Value + "111");
}
}
因为进入页面的时候你都没有初始化啊,你是做点击的时候才添加按钮JS事件
把
Button2.Attributes.Add("onclick", "if(confirm('aa')){document.getElementById('HiddenField1').value='true';}else{document.getElementById('HiddenField1').value='false';}");
放到Page_Load里面
因为第一次进入页面时你想加上去的那个方法并没有加到按钮上去,而在第一次点击之后,执行了Button2_Click之后才把JS绑定以按钮上去的。
我没有试你的代码,不过感觉上应该是有问题的,当你第二次点击时,JS已经绑定到按钮上,如果你再点一次,就会第二次绑定,如此循环,大大不妥。
看起来,你这段代码只是想在客户端显示一些什么,那么可以考虑使用HTML控件,而不要使用ASP.NET控件。