使用Jquery打造最佳用户体验的登录页面的实现代码_jquery
以下操作默认客服端以及开启js支持,noscript情况请自行编写代码实现
首先贴上展示图片:
默认状态:
出错状态:
等待状态:
工作流程:
在用户登录提交之前,在客户端验证输入框只做空值和长度判断,提交到服务器之后自动对提交来的字符串进行合法性以及长度的验证并且去除非法字符返回合法的字符串,根据返回的合法字符串进行登录验证,然后返回json数据给前台处理,其中登录成功的标记是 loginSuccess=0,服务器返回数据之后所有工作交给前台处理。
这里重点介绍前端处理的过程。
首先在页面打开之后让页面获取焦点:
$('body').focus();这样鼠标焦点就不会出现在输入框内。
然后处理两个输入框的获取和失去焦点的事件:
$('.reg-action .reg-input').each(function () {
var items = $(this).parent('.reg-item');
if ($(this).val()) {
items.addClass("focus");
}
$(this).bind('focus blur', function (event) {
var type = event.type; //获取事件类型
if (type == 'focus') {
if (items.hasClass('error')) {
$(this).val("");
items.removeClass('error');
}
items.addClass('focus');
} else if (!$(this).val()) {
items.removeClass('focus');
}
})
});
在提交按钮之后:
$(".btn-submit").click(function () {
var wrongTypeName = 0,//用户名的错误类型,可以直接作为错误提示信息数组的下标
wrongTypePwd = 0,//用户密码的错误类型
uname = $("#uname").val(),//用户名
pwd = $("#passwd").val(),//用户密码
plength = pwd.length,
nlength = uname.length,//长度
wrongNameHtml = new Array("", "请输入用户名", "用户名长度太短", "用户名长度超过12位", "您的用户名或密码错误", "超时,请重新登陆"),
wrongPwdHtml = new Array("", "请输入密码", "密码长度小于6位", "密码长度超过20位", "密码中含有非法字符");
//这里定义的是错误信息的数组
if (nlength == 0) {
wrongTypeName = 1;
}
if (nlength > 0 && nlength < 2) {
wrongTypeName = 2;
}
if (nlength > 20) {
wrongTypeName = 3;
}
if (plength == 0) {
wrongTypePwd = 1;//这里是对用户名和密码长度的一个判断,并获取错误信息数组的下标。
} else {
var patrn = /^(w){6,20}$/;
if (plength < 6)
wrongTypePwd = 2;
if (plength > 20)
wrongTypePwd = 3;
if (plength > 6 && plength < 20) {
if (!patrn.exec(pwd))
wrongTypePwd = 4;//这里是对用户密码合法性的前端判断,并返回错误数组的下标
}
}
var inputTip = function (index, tipHtml, tipNum) {
$(".reg-tip").eq(index).html(tipHtml[tipNum]);
if (tipNum > 0)
$(".reg-item").eq(index).addClass("error");
else
$(".reg-item").eq(index).removeClass("error");
}//定义错误提示信息页面显示函数。由于页面只有两个输入框所以我这里直接指定了index,如果页面上有很多,可以使用$(this).index()
inputTip(0, wrongNameHtml, wrongTypeName);
inputTip(1, wrongPwdHtml, wrongTypePwd);
if (wrongTypePwd == 0 && wrongTypeName == 0) {//在用户输入信息完全合法的情况下,即数组下标全部为0 开始执行ajax验证
//$(".reg-input").attr('disabled', true);
$("#login-form input").attr('disabled', true);
$('.remember').unbind('click');
$(".btn-master").addClass("visibility");
//已经向服务器提交了信息,所以将页面上的所有输入框按钮设置成不可用状态,这样可以有效的避免重复提交
var $params = "username=" uname "&password=" pwd "&remember=" $('#remember-long').val();
//alert($params);
$.ajax({
url: "CheckUserLogin.aspx",
data: $params,
dataType: "json",
success: function (data) {
$(data).each(function (te, u) {
wrongTypeName = u.wrongTypeName;
wrongTypePwd = u.wrongTypePwd;
var loginSuccess = u.loginSuccess;//获取服务器返回的json数据
//alert(wrongTypeName);
//alert(wrongTypePwd);
if (loginSuccess == 0) {
location.href = "/Members/Memb.html";//成功则直接跳转
} else {//登录失败,返回友好的提示信息
$(".btn-master").removeClass("visibility");
$("#login-form input").attr('disabled', false);
inputTip(0, wrongNameHtml, wrongTypeName);
inputTip(1, wrongPwdHtml, wrongTypePwd);
}
});
},
error: function () {//ajax请求错误的情况返回超时重试。
wrongTypeName = 5;
inputTip(0, wrongNameHtml, wrongTypeName);
$("#login-form input").attr('disabled', false);
$('.remember').bind('click', function () { checkClick(); });
$(".btn-master").removeClass("visibility");
}
});
}
});
记住密码的checkbox以及文字的点击:
var checkClick = function () {
if ($('#remember-long').attr('checked') == "checked") {
$('#remember-long').attr('checked', false);
$('#remember-long').val("0")
}
else {
$('#remember-long').attr('checked', true);
$('#remember-long').val("1")
}
}
$('.remember').bind('click', function () { checkClick(); });
$("#remember-long").click(function () { checkClick(); });
//记住登录的checkbox和label点击的绑定。这里只是写入cookies 未作登录处理,
//登录处理的思路是当选中的时候直接读取cookies中的数据提交给后台
//由于cookies中记录的事加密之后的密码所以要追加password已经加密
绑定键盘回车事件:需要引入:hotkeys插件
$(document).bind('keydown', 'return', function(){$(".btn-submit").trigger('click');});
//绑定键盘的回车事件
帮助微软消灭IE6.0
if ($.browser.msie && $.browser.version == "6.0") {
//帮助微软消灭ie6
if ($.cookie('masterShow') != "hidden")
$('body').append('
$(".master").delay(1000).slideDown('', function () {
$(".m-close").fadeIn();
});
$(".m-close-short").click(function () {
$(".m-close").fadeOut('', function () {
$(".master").slideUp();
});
});
$(".m-close-long").click(function () {
$(".m-close").fadeOut('', function () {
$(".master").slideUp();
$.cookie('masterShow', 'hidden');
});
});
}
关于页面,这个登录页面抄袭了点点网以前一个版本的设计,点点使用kissy库每次都发回服务器验证,整个页面的刷新,我改用jquery使用ajax异步验证,并在验证的过程中将页面元素设置为不可用,防止重复登录。
完整文件打包下载:jquery_login.rar
作者:Ethan.zhu

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

随着科技的不断发展,人们对于通讯设备的要求也在不断提升。在市场上,Vivox100s和X100是两款备受关注的手机品牌。它们都拥有独特的特点,各有各的优势。本文将比较这两款手机的用户体验差异,帮助消费者更好地了解它们。Vivox100s和X100在外观设计上有着明显的区别。Vivox100s采用了时尚简约的设计风格,机身轻薄,手感舒适;而X100则更注重实用

在讨论安卓手机的拍照功能时,大多数用户对其给予了肯定,与苹果手机相比,用户普遍认为安卓手机的拍照表现更出色。这一观点并非毫无根据,实际原因也是显而易见的。高端安卓手机在硬件配置方面具有较大的竞争优势,尤其是摄像头传感器方面。许多高端安卓手机采用最新的、顶级的摄像头传感器,这些传感器在像素数、光圈大小和光学变焦能力等方面往往比同期发布的iPhone更为突出。这种优势使得安卓手机在拍摄照片和录制视频时能够提供更高质量的成像效果,满足用户对于摄影和摄像的需求。因此,硬件配置的竞争优势成为了安卓手机吸引

3月31日,CNMO注意到,小米汽车移动端应用程序于3月31日荣登苹果AppStore免费应用排行榜榜首位置。据悉,小米汽车官方App以其全面的功能和卓越的用户体验赢得了广大用户的青睐,迅速跃居榜单第一。该款备受关注的小米汽车App不仅实现了线上购车流程的无缝对接,更集成了远程车辆控制服务,用户足不出户即可完成车辆状态查询、远程操作等一系列智能化操作。特别是在小米汽车SU7新车型发布之际,App同步上线,用户可以通过App直观了解SU7的各项配置细节,并顺利完成预订购车。小米汽车App内部设计涵

7月26日-7月29日,一年一度的ChinaJoy2024将在上海新国际博览中心盛大开幕,优派将携手ZOL中关村在线共同为广大用户及游戏爱好者打造一场包含视觉、听觉、触觉全覆盖的科技盛宴。ZOL中关村在线是一家资讯覆盖全国并定位于销售促进性的IT互动门户,是集产品数据、专业资讯、科技视频、互动行销为一体的复合型媒体。中关村在线打破次元壁,以"潮好玩"为主题亮相于ChinaJoy的E7馆S101展位,为来自全球的观众和业内人士带来多元沉浸的观展体验。优派展区:探索高端显示科技1

用户体验五要素:1、用户需要,用户和经营者分别想从这个产品中获得什么;2、范围功能,这个产品有哪些功能;3、流程设计,可分为交互设计和信息架构两个大的部分,交互设计描述“可能的用户行为”,信息架构关注如何将信息表达给用户;4、原型设计,决定某个板块或按钮等交互元素应该放在页面的什么地方;5、感知设计,是将内容、功能和美学汇集到一起来产生一个最终设计,从而满足其他层面的所有目标。

CodeIgniter是一个功能强大的PHP框架,但有时您可能需要额外的功能来扩展其功能。插件可以帮助您实现这一目标。它们可以提供各种各样的功能,从提高网站性能到改进安全性。1.HMVC(分层模型视图控制器)Hmvc插件允许您在CodeIgniter中使用分层MVC架构。这对于具有复杂业务逻辑的大型项目非常有用。使用HMVC,您可以将控制器组织到不同的模块中,并根据需要加载和卸载这些模块。演示代码://在config/routes.php中添加以下代码:$route["/module/contr

刨析Vue的服务器端通信流程:如何提高用户体验引言:随着互联网的快速发展,客户端与服务器之间的通信变得日益重要。Vue作为一种现代的JavaScript框架,为开发者提供了丰富的工具和技术来实现服务器端通信。本文将深入探讨Vue的服务器端通信流程,并介绍一些提高用户体验的技巧和最佳实践。一、Vue服务器端通信流程概述Vue的服务器端通信流程包括以下几个关键步

3月21日,CNMO注意到,DXOMARK公布了华为Mate60Pro的屏幕测试成绩,得分为143分,在全球屏幕排行榜中处于中游位置。根据DXOMARK的评价,该设备的屏幕提供了令人舒适的用户体验。与上一代华为Mate50Pro相比,最新版本的屏幕在运动和触控响应以及伪像管理方面都有明显的改善,让用户享受到更加优质的视觉体验。屏幕的可读性基本保持了上一代产品的水平,尽管弱光环境下的亮度稍显不足,但该设备屏幕在大多数环境光线条件下可读性良好,色彩呈现准确。尤其在户外的可读性相当不错,屏幕亮度达到了
