<asp:Button ID="btn_check" runat="server" onclick="btn_check_Click" Text="校验" />
<button id="btn_check2" runat="server" onserverclick="btn_check_Click">校验</button> protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
tb_num.Focus();
}
}
protected void btn_check_Click(object sender, EventArgs e)
{
string str = tb_num.Text;
Regex reg = new Regex("^[0-9]{1,20}$");
Match mat = reg.Match(str); if (!mat.Success)
{
MessageBox.Show("请正确输入信息!!");
tb_num.Focus();
tb_num.Attributes.Add("onfocus", "this.select()");
return;
}
}上面是我定义的一个ASP控件,一个HTML控件,两个服务器响应用的是一个事件,但是ASP的只刷新一次,而HTML的刷新两次,这是为什么?onclick和onserverclick两个服务器响应事件的具体流程是怎么走的?
还有,这两个控件的后台调客户端响应事件是不是像下面这样写?谢了!!
btn_check.Attributes.Add("OnClientClick", "....()");
btn_check2.Attributes.Add("onclick", "....()");
<button id="btn_check2" runat="server" onserverclick="btn_check_Click">校验</button> protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
tb_num.Focus();
}
}
protected void btn_check_Click(object sender, EventArgs e)
{
string str = tb_num.Text;
Regex reg = new Regex("^[0-9]{1,20}$");
Match mat = reg.Match(str); if (!mat.Success)
{
MessageBox.Show("请正确输入信息!!");
tb_num.Focus();
tb_num.Attributes.Add("onfocus", "this.select()");
return;
}
}上面是我定义的一个ASP控件,一个HTML控件,两个服务器响应用的是一个事件,但是ASP的只刷新一次,而HTML的刷新两次,这是为什么?onclick和onserverclick两个服务器响应事件的具体流程是怎么走的?
还有,这两个控件的后台调客户端响应事件是不是像下面这样写?谢了!!
btn_check.Attributes.Add("OnClientClick", "....()");
btn_check2.Attributes.Add("onclick", "....()");
服务器响应事件:OnClick
客户端响应属性:OnClientClick 对于html按钮控件(即<input type="button" runat="server">)
服务器响应事件:OnServerClick
客户端响应事件:onclick <input id="Submit2" runat="server" onserverclick="Submit1_ServerClick1" type="submit" value="录入信息" />
摘自:http://www.cnblogs.com/lcl_1015/archive/2008/09/23/1297180.html
btn_check.Attributes.Add("OnClientClick", "....()");
btn_check2.Attributes.Add("onclick", "....()");
可以这么写
btnDel.Attributes["onclick"] = "javascript:if(!confirm('确定删除吗?')) return false;";
这样就会为按钮注册一个客户端的onclick事件,当然也可以注册其它事件。
当一个服务器端控件(只要带runat="server"无论是asp还是html都是服务器端控件)同时具有客户端的onclick事件和服务端的onclick事件时,先执行的为客户端事件,然后才会执行服务器端事件,例如:
btnDel.Attributes["onclick"] = "javascript:if(!confirm('确定删除吗?')) return false;";
当点击删除按钮时,就会执行onclick事件注册的代码,这时会弹出一个confirm,当点击确定按钮,那么就会去执行服务器端事件,否则就不执行。所以我们可以在客户端来控制是否去真正触发服务器端的事件。
简言之,当客户端事件注册的代码块或其它js函数返回true值或无返回值时,就会执行服务器端方法,如果返回false就不会执行服务器端事件方法.