zoukankan      html  css  js  c++  java
  • 让服务器端控件同时执行客户端脚本和服务器端代码

    让服务器控件的事件同时执行客户端脚本和服务器端代码
        问题:
            有时候我们需要一个服务器控件同时执行客户端脚本(如javascript)和服务器端代码。比如在进行表单验证的时候,希望先在客户端进行验证,只有通过验证才执行后台代码。这样可以避免不必要的postback,提供更好的用户体验。
        解决方案:
            在不同的地方分别注册客户端和服务器端事件处理函数。示例如下:
        Web页面代码(仅HTML部分):
        <HTML>
            
    <HEAD>
                
    <title>DoubleSidesHandler</title>
                
    <script language="javascript">
                    
    function submitClientHandler()
                    {
                        
    var len = document.form1.txtName.value.length;
                        
    if(len < 3)
                        {
                            window.alert(
    "required at least 3 letters!");
                            
    return false;
                        }
                        window.alert(document.form1.txtName.value);
                        
    return true;
                    }
                    
                    
    function initHandler()
                    {
                        
    var elem = document.form1.btnSubmit;
                        
    if(elem)
                        {
                            elem.onclick 
    = submitClientHandler;
                        }
                    }
                
    </script>
            
    </HEAD>
            
    <body onload="initHandler()">
                
    <form id="form1" method="post" runat="server">
                    Enter your name:
                    
    <asp:TextBox ID="txtName" Width="200px" Runat="server"></asp:TextBox>
                    
    <br>
                    
    <asp:Button ID="btnSubmit" Text="Submit" Runat="server" OnClick="SubmitServerHandler"></asp:Button>
                
    </form>
            
    </body>
        
    </HTML>

         后台代码(仅事件处理函数):
         
         protected void SubmitServerHandler(object sender, System.EventArgs e)
         {
            Response.Write(
    "hello!" + txtName.Text + "<br>");
         }

         分析:
         这里客户端和服务器端的事件处理函数分别是submitClientHandler()和SubmitServerHandler()。submitClientHandler()在页面加载完成时(onload事件中)注册,这时才能获得对服务器控件的引用。SubmitServerHandler()在Button控件的OnClick属性中注册,这里注意该方法须声明为protected以上级别,这样才能在页面中访问。完成这两步注册后,页面会先后执行客户端和服务器端时间处理函数。

         那么,怎么才能控制对服务器端代码的调用?看
    submitClientHandler()函数,如果返回false,那么就不执行SubmitServerHandler(),如果返回true,就会继续调用SubmitServerHandler()。

    作者:Anders Cui
    出处:http://anderslly.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    jython resources
    Installing a Library of Jython ScriptsPart of the WebSphere Application Server v7.x Administration Series Series
    jython好资料
    ulipad install on 64bit win7 has issue
    an oracle article in high level to descibe how to archtichre operator JAVA relevet project
    table的宽度,单元格内换行问题
    Linux常用命令大全
    dedecms系统后台登陆提示用户名密码不存在
    登录织梦后台提示用户名不存在的解决方法介绍
    Shell常用命令整理
  • 原文地址:https://www.cnblogs.com/anderslly/p/doublesidesevent.html
Copyright © 2011-2022 走看看