页面加载完成时:
当验证码得到焦点时:
实现这个ajax为了节约时间,用户名/密码/验证码我都没判断是否为空,我也没用数据库,登录用户名和密码都是admin
登录成功时:
这里说明一下,由于时间有限,你可以把这个登录成功或者登录失败,效果做一下,直接在登录窗口上放一个<div id="message"><div>然后设置其样式,把提示内容追加上去,根据自己个人需求来,下面贴我的全部代码:
下面我们一个个文件来看login.htm文件
代码如下 | 复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>mydream_后台登录</title> <link href="css/login.css" rel="stylesheet" type="text/css" /> <script src="js/jquery-1.4.1-vsdoc.js" type="text/javascript"></script> <script src="js/login.js" type="text/javascript"></script> </head> <body> <div id="login" class="login"> <div class="title"><b>管理员登录</b></div> <div class="pad"> <div><p class="selectinput loginpsw"><label>用户名:</label><input type="text" tabindex="1" class="txt" size="36" name="username" id="txtName" /></p></div> <div><p class="selectinput loginpsw"><label>密 码:</label><input type="password" tabindex="1" class="txt" size="36" name="password" id="txtPassword" /></p></div> <div><div><p class="selectinput loginpsw"><label>验证码:</label><input type="text" tabindex="1" class="txt" size="36" name="code" id="txtCode"/></p></div></div> <div><input id="btnLogin" type="button" value="登 录" /></div> </div> <div class="divCode"><img alt="验证码" title="点击刷新验证码" src="../ashx/verifyCode.ashx" /></div> </div> </body> </html> |
登录的css
代码如下 | 复制代码 |
.selectinput{margin-bottom:10px;width:224px;height:20px;background-color:#FFF;border:1px solid;border-color:#999 #CCC #CCC #999;} .selectinput .txt{float:left;width:165px;border:none;} .loginpsw label{float:left;display:inline;margin:0 0 0 4px;width:50px;height:auto;line-height:150%; color:#339900} body,td,input,textarea,select,button{color:#666;font:12px/1.6em Verdana,Helvetica,Arial,sans-serif;} input,select,button{vertical-align:middle;} .txt,.txtarea{padding:2px;*padding:0 2px;height:16px;*height:20px;border:1px solid;border-color:#999 #CCC #CCC #999;background:#FFF;} body{ margin:0 auto;} .login{border:solid 3px #339900; width:360px; height:223px;display:none; z-index:101;position:absolute; background-color:#FFFFFF;} .login .title{width:100%;height:30px;line-height:30px; border-bottom:solid 1px #339900;} .login .title b{ padding-left:5px; color:#000000;} .login .pad{padding-left:35px;} .login .divCode{width:80px; height:30px;position:relative;top: -32px;left:170px; display:none;} .login #btnLogin{width:55px; height:28px;} #greybackground{background:#000000;width:100%; display:block; z-index:100; top:0px; left:0px; position:absolute;} .selectinput{margin-bottom:10px;width:224px;height:20px;background-color:#FFF;border:1px solid;border-color:#999 #CCC #CCC #999;} |
jquery文件,其它的到官方下载吧
代码如下 | 复制代码 |
/// <reference path="../../js/jquery-1.4.1-vsdoc.js" /> $(document).ready(function() { var screenwidth, screenheight, mytop, getPosLeft, getPosTop screenwidth = $(window).width(); screenheight = $(window).height(); //获取滚动条距顶部的偏移 mytop = $(document).scrollTop(); //计算弹出层的left getPosLeft = screenwidth / 2 - 200; //计算弹出层的top getPosTop = screenheight / 2 - 150; //css定位弹出层 $("#login").css({ "left": getPosLeft, "top": getPosTop }); //当浏览器窗口大小改变时 $(window).resize(function() { screenwidth = $(window).width(); screenheight = $(window).height(); mytop = $(document).scrollTop(); getPosLeft = screenwidth / 2 - 200; getPosTop = screenheight / 2 - 150; $("#login").css({ "left": getPosLeft, "top": getPosTop + mytop }); }); //当拉动滚动条时,弹出层跟着移动 $(window).scroll(function() { screenwidth = $(window).width(); screenheight = $(window).height(); mytop = $(document).scrollTop(); getPosLeft = screenwidth / 2 - 200; getPosTop = screenheight / 2 - 150; $("#login").css({ "left": getPosLeft, "top": getPosTop + mytop }); }); //失去焦点与得到焦点 $("#txtCode").focus(function() { $(".divCode").fadeIn(1200); }); $("#txtCode").blur(function() { $(".divCode").fadeOut(); }); $("#login").fadeIn("slow"); //toggle("slow"); //获取页面文档的高度 var docheight = $(document).height(); //追加一个层,使背景变灰 $("body").append("<div id='greybackground'></div>"); $("#greybackground").css({ "opacity": "0.1", "height": docheight }); //登录 $("#btnLogin").click(function() { $.get("../ashx/login.ashx", { name: $("#txtName").val(), pwd: encodeURIComponent($("#txtPassword").val()), code: $("#txtCode").val() }, function(data) { switch (data) { case "code error": alert("验证码错误!"); break; case "success": alert("登录成功!"); break; case "false": alert("登录失败!"); break; default: alert("数据加载失败,请稍后再试!"); break; } }); }); }); |
login.ashx文件
代码如下 | 复制代码 |
<%@ WebHandler Language="C#" Class="login" %> using System; public class login : IHttpHandler, IRequiresSessionState public bool IsReusable } verifyCode.ashx <%@ WebHandler Language="C#" Class="verifyCode" %> using System; public class verifyCode : IHttpHandler, IRequiresSessionState public void ProcessRequest(HttpContext context) public bool IsReusable /// <summary> /// <summary> //封装一个 GDI+绘图图面。无法继承此类。从指定的Image创建新的 Graphics //清除整个绘图面并以指定背景填充 //画一个边框 //定义绘制直线和曲线的对象。(只是Pen的颜色,指示此Pen的宽度的值) Random rand = new Random(); //划横线的条数 可以根据自己的要求 for (int i = 0; i < 50; i++) //拆散字符串成单个字符数组 //文字居中 //定义颜色 for (int i = 0; i < chars.Length; i++) //font 封装在特定设备上呈现特定字体所需的纹理和资源(字体,大小,字体样式) /*Brush定义用于填充图形图像(如矩形、椭圆、圆形、多边形和封闭路径)的内部对象 Point dot = new Point(16, 16); //转动的度数 //移动光标到指定位置 //将此图像以指定的格式保存到指定的流中(将其保存在内存流中,图像的格式) //清除缓冲区将流中的内容输出 //获取输出流的类型 //将二进制字符串写入HTTP输出流 g.Dispose(); image.Dispose(); |