zoukankan      html  css  js  c++  java
  • Jquery asp.net注册表单实现校验生成与判断

    最近在学习Jquery,然后找了几个案例,比如今天学习的如何开发一个注册的界面。设计的原型是ifeng的。

    clip_image002[4]

    想要做成的效果

    clip_image003[4]

    clip_image005[4]

    自己做成的效果

    上面是自己设置的一个界面,当用户的鼠标移动到相应的文本框时右侧会显示提示框,并且这个页面会生成一个检验码,并且这个界面的校验采用的是Ajax

     

    页面代码:

    <form id="form1" runat="server">

       <div>

            <ul class="tab">

          <li  id="js-reg-tab-1">邮箱注册</li>

          <li id="js-reg-tab-2">手机注册</li>

         </ul>

       </div>

      <fieldset>

        <div>

          <label for="email">电子邮箱</label>

            <input id="email" name="email" title="请输入您常用的邮箱"/>

            <div id="js-email-error" style="display:none">sdfsad</div>

        </div>

        <div>

          <label for="password">密码</label>

            <input type="password" id="password" name="password" title="6-20位字符,不能使用空格、注册帐号"/>

        </div>

        <div>

          <label for="affirmpassword">确认密码</label>

            <input type="password" id="affirmpassword" name="affirmpassword" title="请再次输入密码."/>

        

        </div>

          <div>

               <label for="Securitycode">验证码</label>

     

              <input id="Securitycode" name="Securitycode"  />

              <span><img id="img1" src="CheckCode.aspx" /></span>

              <a id="a1" style="cursor: pointer; font-size: 12px;"  onclick="newCheckCode()" >看不清,换一个</a> 

              <a></a>

          </div>

          <div>

            <input type="button" id="btn" value="提交" /> 

          <asp:Button ID="btnOK" runat="server" onclick="btnOK_Click" Text="验证" /> 

          </div>

      </fieldset>

    </form>

     

    脚本内容

    <script type="text/javascript">

     

            $(function () {

                var tooltips = $("[title]").tooltip({

                    position: {

                        my: "left top",

                        at: "right+5 top-5"

                    }

                });

           

     

                $("#btn").click(function() {

                    $.ajax({

                        type: "post",

                        url: "Default3.aspx/VerificationCode",

                        data: "{'code':'" + $("#Securitycode").val() + "'}",

                        contentType: "application/json; charset=utf-8",

                        dataType: "json",

                        success: function (data) {

                            switch (data.d) {

     

                                case 1:

                                    alert("验证码正确!");

                                    break;

                                default:

                                    alert("验证码错误!");

                                    newCheckCode();

                                    break;

                            }

                        },

                        error: function (err) {

                            alert('出错了' + err);

                        }

                    });

                });

            });

     

            function trim(str) { //删除左右两端的空格  

                return str.replace(/(^s*)|(s*$)/g, "");

            }

     

            function newCheckCode() {//刷新验证码 

               

                $("#img1").attr("src", "CheckCode.aspx"+"?"+Math.random());

            }

    </script>

     

    CSS代码:

          <style>

     label {

        display: inline-block; width: 5em;

      }

      fieldset div {

        margin-bottom: 1em;

      }

      fieldset .help {

        display: inline-block;

      }

      .ui-tooltip {

        width: 410px;

          font-size: 12px;

      }

     

      .tab{background:#fff repeat-y right 0; height:38px; border-top:1px solid #e5e5e5; position: relative; width:240px;;}

      .tab li{cursor:pointer;

        border-left:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5; text-align: center; line-height: 38px; font-size: 16px; float: left; width:119px;}

    .tab li.current{font-weight: bold; border-bottom:1px solid #fff;}

    /* 表单输入框自动提示 */

    .mail_tip {position:absolute;left:76px;top:30px; overflow:hidden;z-index:1; width:268px;height:170px; background:#FFF;border:1px solid #a3d2e7; border-top:none; display:none;padding-top:5px;}

    .mail_tip li{width:100%;height:20px;line-height:20px;text-indent:5px; color:#999;cursor:pointer; font-size:12px;font-family:Arial;}

    .mail_tip li:hover,.mail_tip li.hover{background:#eee;}

    .indexput{z-index: 10;}

    .mail_tip li span{ color:#aaa; font-family:"宋体";background:#fff!important; display: block; cursor: default;}

     

    .txt_tips{color: #bbb; float: left; width: 160px;}

    .txt_tips_double{line-height:16px;}

    .txt_tips_double img{*margin-top:8px;}

    .txt_tips_ok,.txt_tips_error,.txt_tips_stop{width:18px; height:30px; display: block;}

    .txt_tips_ok{background: url(../images/icon01.gif) no-repeat 0 center;}

    .txt_tips_error{background: url(../images/icon02.gif) no-repeat 0 center; width:136px; padding-left:24px; color: #BA2636}

      </style>

    引用文件:

    <script src="../../js/jquery-1.8.3.js"></script>

        <script src="../../js/jquery-ui-1.9.2.custom.js"></script>

    <link href="../../css/ui-lightness/jquery-ui-1.9.2.custom.css" rel="stylesheet" />

     

     

    CheckCode.aspx.cs代码:

    namespace wcs

    {

        public partial class CheckCode : System.Web.UI.Page

        {

            public static string checkkeyCode = string.Empty;

     

            protected void Page_Load(object sender, EventArgs e)

            {

                this.CreateCheckCodeImage(GenerateCheckCode());

            }

     

            /// <summary>

            /// 该类的作用是生成检验码字符

            /// </summary>

            /// <returns></returns>

            private string GenerateCheckCode()

            {

                int number;

                char code;

                string checkCode = string.Empty;

                System.Random random = new Random();//Random类是随机数生成类

                for (int i = 0; i < 5; i++)

                {

                    number = random.Next();

                    if (number%2 == 0)//如果是偶数生成一个数字

                        code = (char) ('0' + (char) (number%10));

                    else//如果是奇数生成一个字母

                    {

                        code = (char) ('A' + (char) (number%26));

                    }

                    checkCode += code.ToString();

                }

                //下面的是创建一个Cookie来保存字符

                HttpCookie cookies = new HttpCookie("CheckCode");

                cookies.Values.Add("CheckCode", checkCode.Trim().ToLower());

                cookies.Expires = DateTime.Now.AddMinutes(10);//表示该字符有效时间为十分钟

                Response.AppendCookie(cookies);

                checkkeyCode = checkCode;

                return checkCode;

     

            }

            /// <summary>

            /// 绘制一个检验图片

            /// </summary>

            /// <param name="checkCode"></param>

            private void CreateCheckCodeImage(string checkCode)

            {

                if (checkCode == null || checkCode.Trim() == string.Empty)

                    return;

                System.Drawing.Bitmap image = new System.Drawing.Bitmap((int) Math.Ceiling((checkCode.Length*14.5)), 22);//创建一张绘图对象

                Graphics g = Graphics.FromImage(image);//GDI的绘制类

                try

                {

                    Random random = new Random();

                    g.Clear(Color.White);//清除之前生成的内容

                    //随机在图片区域内绘制线条,主要是干扰用的

                    for (int i = 0; i < 60; i++)

                    {

                        int x1 = random.Next(image.Width);

                        int x2 = random.Next(image.Width);

                        int y1 = random.Next(image.Height);

                        int y2 = random.Next(image.Height);

                        g.DrawLine(new Pen(Color.GreenYellow), x1, y1, x2, y2);

                    }

                    Font font = new System.Drawing.Font("Verdana", 12,

                        (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));//设置字体

                    System.Drawing.Drawing2D.LinearGradientBrush brush =// 创建一个渐变化笔刷

                        new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),

                            Color.Blue, Color.DarkRed, 1.2f, true);

                    g.DrawString(checkCode, font, brush, 2, 2);//绘制字符

                    //绘制燥点,主要作用是干扰

                    for (int i = 0; i < 150; i++)

                    {

                        int x = random.Next(image.Width);

                        int y = random.Next(image.Height);

                        image.SetPixel(x, y, Color.FromArgb(random.Next()));

                    }

                    g.DrawRectangle(new Pen(Color.Red), 0, 0, image.Width - 1, image.Height - 1);

                    System.IO.MemoryStream ms = new MemoryStream();

                    image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);//保存为Gif格式进ms

                    Response.ClearContent();//清除原有的内容

                    Response.ContentType = "image/Gif";//将当前的输出类型改为图片格式

                    Response.BinaryWrite(ms.ToArray());//将图片内容进行输出

                }

                finally

                {

                    g.Dispose();

                    image.Dispose();

                }

            }

    }

    笔记:

    <span><img id="img1" src="CheckCode.aspx" /></span>

    验证码的生成主要是上面的这句话,用户在加载的页面的时候会自动调用CheckCode.aspx的函数this.CreateCheckCodeImage(GenerateCheckCode());

    CheckCode.aspx主要有两个方法CreateCheckCodeImageGenerateCheckCode

    GenerateCheckCode的作用是生成校验码字符

    GenerateCheckCode的作用是根据之前生成的字符来创建一个GIF的图片,在创建的过程当中获致燥点。

     

     

    当用户点击提交按钮会调用以下语句

    $("#btn").click(function() {

                    $.ajax({

                        type: "post",

                        url: "Default3.aspx/VerificationCode",

                        data: "{'code':'" + $("#Securitycode").val() + "'}",

                        contentType: "application/json; charset=utf-8",

                        dataType: "json",

                        success: function (data) {

                            switch (data.d) {

     

                                case 1:

                                    alert("验证码正确!");

                                    break;

                                default:

                                    alert("验证码错误!");

                                    newCheckCode();

                                    break;

                            }

                        },

                        error: function (err) {

                            alert('出错了' + err);

                        }

                    });

                });

    上面的代码是为按钮绑定一个click事件,当用户点击的时候调用一个ajax事件,该事件主要是发送一个Post请求(请求的数据为用户输入的校验内容)给一个Webservices服务方法Default3.aspx/VerificationCode来进行校验结果successerror是两个回调的事件,当用户执行完成ajax请求之后会根据其执行的结果来回调到相应的事件当中。

  • 相关阅读:
    Ehcache(04)——设置缓存的大小
    Ehcache(03)——Ehcache中储存缓存的方式
    Ehcache(02)——ehcache.xml简介
    Ehcache(01)——简介、基本操作
    linux 下开机自动启动tomcat服务
    Git_常用链接
    Android_listview点击失效
    Android_Drawable Bitmap Canvas Paint之间区别[转]
    Android_广播
    Notification(Notification的通知栏常驻、Notification的各种样式、Notification点击无效)
  • 原文地址:https://www.cnblogs.com/tianyake/p/4214373.html
Copyright © 2011-2022 走看看