让服务器控件的事件同时执行客户端脚本和服务器端代码
问题:
有时候我们需要一个服务器控件同时执行客户端脚本(如javascript)和服务器端代码。比如在进行表单验证的时候,希望先在客户端进行验证,只有通过验证才执行后台代码。这样可以避免不必要的postback,提供更好的用户体验。
解决方案:
在不同的地方分别注册客户端和服务器端事件处理函数。示例如下:
Web页面代码(仅HTML部分):
1
<HTML>
2
<HEAD>
3
<title>DoubleSidesHandler</title>
4
<script language="javascript">
5
function submitClientHandler()
6
{
7
var len = document.form1.txtName.value.length;
8
if(len < 3)
9
{
10
window.alert("required at least 3 letters!");
11
return false;
12
}
13
window.alert(document.form1.txtName.value);
14
return true;
15
}
16
17
function initHandler()
18
{
19
var elem = document.form1.btnSubmit;
20
if(elem)
21
{
22
elem.onclick = submitClientHandler;
23
}
24
}
25
</script>
26
</HEAD>
27
<body onload="initHandler()">
28
<form id="form1" method="post" runat="server">
29
Enter your name:
30
<asp:TextBox ID="txtName" Width="200px" Runat="server"></asp:TextBox>
31
<br>
32
<asp:Button ID="btnSubmit" Text="Submit" Runat="server" OnClick="SubmitServerHandler"></asp:Button>
33
</form>
34
</body>
35
</HTML>
36
37
38
39
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiangyehpu/archive/2009/02/25/3934536.aspx
<HTML>2
<HEAD>3
<title>DoubleSidesHandler</title>4
<script language="javascript">5
function submitClientHandler()6
{7
var len = document.form1.txtName.value.length;8
if(len < 3)9
{10
window.alert("required at least 3 letters!");11
return false;12
}13
window.alert(document.form1.txtName.value);14
return true;15
}16
17
function initHandler()18
{19
var elem = document.form1.btnSubmit;20
if(elem)21
{22
elem.onclick = submitClientHandler;23
}24
}25
</script>26
</HEAD>27
<body onload="initHandler()">28
<form id="form1" method="post" runat="server">29
Enter your name:30
<asp:TextBox ID="txtName" Width="200px" Runat="server"></asp:TextBox>31
<br>32
<asp:Button ID="btnSubmit" Text="Submit" Runat="server" OnClick="SubmitServerHandler"></asp:Button>33
</form>34
</body>35
</HTML>36

37

38

39
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiangyehpu/archive/2009/02/25/3934536.aspx后台代码(仅事件处理函数):
1
protected void SubmitServerHandler(object sender, System.EventArgs e)
2
{
3
Response.Write("hello!" + txtName.Text + "<br>");
4
}
protected void SubmitServerHandler(object sender, System.EventArgs e)2
{3
Response.Write("hello!" + txtName.Text + "<br>");4
} 分析:
这里客户端和服务器端的事件处理函数分别是submitClientHandler()和SubmitServerHandler()。submitClientHandler()在页面加载完成时(onload事件中)注册,这时才能获得对服务器控件的引用。SubmitServerHandler()在Button控件的OnClick属性中注册,这里注意该方法须声明为protected以上级别,这样才能在页面中访问。完成这两步注册后,页面会先后执行客户端和服务器端时间处理函数。
那么,怎么才能控制对服务器端代码的调用?看submitClientHandler()函数,如果返回false,那么就不执行SubmitServerHandler(),如果返回true,就会继续调用SubmitServerHandler()。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiangyehpu/archive/2009/02/25/3934536.aspx

浙公网安备 33010602011771号