使用jQuery如何写一个含验证码的登录界面


Posted in jQuery onMay 13, 2019

一个包含用户名,密码,验证码的简单的登陆界面,如下图所示:

使用jQuery如何写一个含验证码的登录界面

首先是 HTML 代码:

<div id="divID">
 <div style="background-color:transparent;">
  <form id="ff" method="post">
   <ul class="reg-box">
    <li>
     <label for="">账 号</label>
     <input type="text" name="accName" value="" class="account" maxlength="11" style="color:#999;" onBlur="textBlur(this)" onFocus="textFocus(this)"/>
     <span class="error error5"></span>
    </li>
    <li>
     <label for="">密 码</label>
     <input type="password" name="accPassWord" class="admin_pwd" value="" style="color:#999;" onBlur="textBlur(this)" onFocus="textFocus(this)"/>
     <span class="error error6"></span>
    </li>
    <li>
     <label for="">验证码</label>
     <input type="text" class="sradd photokey" id="key" value="" style="color:#999;ime-mode:disabled;-webkit-ime-mode:inactive;" onBlur="textBlur(this)" onFocus=" textFocus(this) " />
     <span class="add phoKey"></span>
     <span class="error error7"></span>
    </li>
   </ul>
   <div class="sub">
    <input type="submit" value="立即登录"/>
   </div>
  </form>
 </div>
</div>

然后是实现验证用户的输入是否正确的 JS 代码:

//文本框默认提示文字
function textFocus(el) {
 if (el.defaultValue == el.value) { el.value = ''; el.style.color = '#333'; }
}
function textBlur(el) {
 if (el.value == '') { el.value = el.defaultValue; el.style.color = '#999'; }
}

$(function(){
 /*生成验证码*/
 create_code();

 //登录页面的提示文字
 //账户输入框失去焦点
 (function login_validate(){
  $(".reg-box .account").blur(function(){
   //reg=/^1[3|4|5|8][0-9]\d{4,8}$/i;//验证手机正则(输入前7位至11位)

   if( $(this).val()==""|| $(this).val()=="请输入您的账号")
   {
    $(this).addClass("errorC");
    $(this).next().html("账号不能为空!");
    $(this).next().css("display","block");
    $(".sub input").prop('disabled', true);
   }
//    else if($(".reg-box .account").val().length<11)
//    {
//     $(this).addClass("errorC");
//     $(this).next().html("账号长度有误!");
//     $(this).next().css("display","block");
//    }
//    else if(!reg.test($(".reg-box .account").val()))
//    {
//     $(this).addClass("errorC");
//     $(this).next().html("账号不存在!");
//     $(this).next().css("display","block");
//    }
   else
   {
    $(".sub input").prop('disabled', false);
    $(this).addClass("checkedN");
    $(this).removeClass("errorC");
    $(this).next().empty();
   }
  });
  /*密码输入框失去焦点*/
  $(".reg-box .admin_pwd").blur(function(){
   //reg=/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/;

   if($(this).val() == ""){
    $(this).addClass("errorC");
    $(this).next().html("密码不能为空!");
    $(this).next().css("display","block");
    $(".sub input").prop('disabled', true);
   }
//    else if(!reg.test($(".admin_pwd").val())) {
//     $(this).addClass("errorC");
//     $(this).next().html("密码为6~12位的数字、字母或特殊字符!");
//     $(this).next().css("display","block");
//    }
   else {
    $(".sub input").prop('disabled', false);
    $(this).addClass("checkedN");
    $(this).removeClass("errorC");
    $(this).next().empty();
   }
  });

  /*验证码输入框失去焦点*/
  $(".reg-box .photokey").blur(function(){
   var code1=$('.reg-box input.photokey').val().toLowerCase();
   var code2=$(".reg-box .phoKey").text().toLowerCase();
   if(code1!=code2)
   {
    $(this).addClass("errorC");
    $(this).next().next().html("验证码输入错误!!!");
    $(this).next().next().css("display","block");
    $(".sub input").prop('disabled', true);
   }
   else
   {
    $(".sub input").prop('disabled', false);
    $(this).removeClass("errorC");
    $(this).next().next().empty();
    $(this).addClass("checkedN");
   }
  })
 })();
});

函数 create_code() 用于生成验证码:

function create_code() {
 function shuffle() {
  var arr = ['1', 'r', 'Q', '4', 'S', '6', 'w', 'u', 'D', 'I', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
   'q', '2', 's', 't', '8', 'v', '7', 'x', 'y', 'z', 'A', 'B', 'C', '9', 'E', 'F', 'G', 'H', '0', 'J', 'K', 'L', 'M', 'N', 'O', 'P', '3', 'R',
   '5', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
  return arr.sort(function () {
   return (Math.random() - .5);
  });
 };
 shuffle();
 function show_code() {
  var ar1 = '';
  var code = shuffle();
  for (var i = 0; i < 6; i++) {
   ar1 += code[i];
  }
  ;
  //var ar=ar1.join('');
  $(".reg-box .phoKey").text(ar1);
 };
 show_code();
 $(".reg-box .phoKey").click(function () {
  show_code();
 });
}

最后是非常重要的 CSS 代码:

body{
 background: #000;
}
#divID {
  position: fixed;
  left: 47%;
  top: 53%;
  width: 500px;
  margin-left: -200px;
  margin-top: -150px;
  font-family: "黑体";
  /*禁止复制粘贴*/
  -moz-user-select: none;
  -webkit-user-select: none;
  user-select:none;
  color:#fff;
 }
 .register_dialog_info {
  float: left;
  margin-left:10px;
  color: #fff;
  margin-top: 5px;
  font-size: 20px;
 }
 form{padding: 20px 0px;}
 ul li {list-style: none;}
 .sub {
  text-align: center;
 }
 .sub input {
  display: inline-block;
  width: 300px;
  background-color: #012246;
  color: rgb(255, 255, 255);
  font-size: 20px;
  text-align: center;
  height: 40px;
  line-height: 40px;
  font-family: 黑体;
  outline: none;
  border: none;
  margin: auto;
  border-radius: 10px;
 }
 input[type = "submit"]:hover{cursor: pointer;}

 .reg-box { padding-left: 30px; }

 .reg-box li { line-height: 44px; width: 500px; overflow: hidden; }

 .reg-box li label { width: 68px; height: 50px; float: left; line-height: 50px; text-align: right; padding-right: 20px; }

 .reg-box li input,.reg-box li select{ border-radius: 3px; padding: 6px 0; font-size: 16px; width: 296px; height: 49px; line-height: 28px; border: 1px solid #dddddd; text-indent: 0.5em; float: left; }

 .reg-box li select option{font-size:16px;}

 /*验证码*/
 .add { width: 128px; height: 44px; float: left; _display: inline; cursor: pointer; margin-left: 20px; }

 .reg-box li .sradd { width: 148px; text-indent: 4px; font-size: 14px; }

 .reg-box li .input-code { width: 106px; padding: 10px; font-family: Arial; font-style: italic; color: red; letter-spacing: 1px; cursor: pointer; text-align: center; text-indent: 0; }

 .yzm,.phoKey { background: #012246; text-align: center; line-height: 44px; color: #fff; border-radius: 3px;}

 .phoKey{letter-spacing: 3px; font-size:18px;}

 .yzmc { background: #dddddd; text-align: center; line-height: 44px; color: #999; }

 .error { clear:both;display:block;color: red; padding-left: 90px; padding-bottom:5px;height:20px;float: left; font-size:12px;line-height: 20px;}

 input { background-color: #fff; outline: none; }

 .reg-box li { width: auto; }

 .reg-box li input.errorC, .errorC{ border: 1px solid blue; }

 .reg-box li input.checkedN , .checkedN{ border: 1px solid #1ece6d; }

以上所述是小编给大家介绍的如何写一个含验证码的登录界面详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
深入浅析angular和vue还有jquery的区别
Aug 13 jQuery
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
jQuery分组选择器简单用法示例
Apr 04 jQuery
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
jQuery实现二级导航菜单的示例
Sep 30 jQuery
jQuery实现查看图片功能
Dec 01 jQuery
jquery实现拖拽小方块效果
Dec 10 jQuery
JQuery特殊效果和链式调用操作示例
May 13 #jQuery
JQuery的加载和选择器用法简单示例
May 13 #jQuery
JQuery事件委托原理与用法实例分析
May 13 #jQuery
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 #jQuery
使vue实现jQuery调用的两种方法
May 12 #jQuery
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
May 12 #jQuery
jQuery实现动态生成年月日级联下拉列表示例
May 11 #jQuery
You might like
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
javascript JSON操作入门实例
2010/04/16 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
js中时间格式化的几种方法
2018/07/22 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
使用Python生成XML的方法实例
2017/03/21 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
python3中property使用方法详解
2019/04/23 Python
python监控nginx端口和进程状态
2019/09/06 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
纠风工作实施方案
2014/03/15 职场文书
新学期开学演讲稿
2014/05/24 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
单位委托函范文
2015/01/29 职场文书
自荐信格式范文
2015/03/04 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书