使用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 wrongTypeName = 2;
}
if (nlength > 20) {
wrongTypeName = 3;
}
if (plength == 0) {
wrongTypePwd = 1;//这里是对用户名和密码长度的一个判断,并获取错误信息数组的下标。
} else {
var patrn = /^(\w){6,20}$/;
if (plength wrongTypePwd = 2;
if (plength > 20)
wrongTypePwd = 3;
if (plength > 6 && plength 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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++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

CodeIgniter是一個強大的PHP框架,但有時您可能需要額外的功能來擴展其功能。插件可以幫助您實現這一目標。它們可以提供各種各樣的功能,從提高網站效能到改進安全性。 1.HMVC(分層模型視圖控制器)Hmvc外掛程式可讓您在CodeIgniter中使用分層MVC架構。這對於具有複雜業務邏輯的大型專案非常有用。使用HMVC,您可以將控制器組織到不同的模組中,並根據需要載入和卸載這些模組。示範程式碼://在config/routes.php中加入以下程式碼:$route["/module/contr

使用者體驗五要素:1、使用者需要,使用者和經營者分別想從這個產品中獲得什麼;2、範圍功能,這個產品有哪些功能;3、流程設計,可分為互動設計與資訊架構兩個大的部分,互動設計描述“可能的使用者行為”,資訊架構關注如何將資訊表達給使用者;4、原型設計,決定某個板塊或按鈕等互動元素應該放在頁面的什麼地方;5、感知設計,是將內容、功能和美學匯集在一起來產生一個最終設計,從而滿足其他層面的所有目標。

刨析Vue的伺服器端通訊流程:如何提高使用者體驗引言:隨著網際網路的快速發展,客戶端與伺服器之間的通訊變得日益重要。 Vue作為一種現代的JavaScript框架,為開發者提供了豐富的工具和技術來實現伺服器端通訊。本文將深入探討Vue的伺服器端通訊流程,並介紹一些提升使用者體驗的技巧和最佳實務。一、Vue伺服器端通訊流程概述Vue的伺服器端通訊流程包括以下幾個關鍵步

隨著行動互聯網的快速發展,越來越多的人開始使用手機和平板電腦瀏覽網頁,這給傳統網頁設計帶來了巨大的挑戰。傳統的網頁設計往往是基於桌面端的,而手機和平板電腦的螢幕尺寸和解析度與桌上型電腦有所不同,如果繼續使用傳統的固定寬度網頁設計,將會導致在行動裝置上顯示困難,使用者體驗不佳。而響應式佈局則是一種能夠在不同裝置上自適應顯示的網頁設計方式,它為使用者帶來了更好的瀏覽體
