使用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 相关文章推荐
vue中如何引入jQuery和Bootstrap
Apr 10 jQuery
jQuery实现动态添加、删除按钮及input输入框的方法
Apr 27 jQuery
jQuery操作css样式
May 15 jQuery
jquery与js实现全选功能的区别
Jun 11 jQuery
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
jQuery之动画ajax事件(实例讲解)
Jul 18 jQuery
jquery版轮播图效果和extend扩展
Jul 18 jQuery
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 jQuery
jquery 遍历hash操作示例【基于ajax交互】
Oct 12 jQuery
高效jQuery选择器的5个技巧实例分析
Nov 26 jQuery
jQuery HTML获取内容和属性操作实例分析
May 20 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线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
python获取代理IP的实例分享
2018/05/07 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
Python count函数使用方法实例解析
2020/03/23 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
个人求职简历中英文自我评价
2013/12/16 职场文书
优秀教师事迹简介
2014/02/02 职场文书
食品安全承诺书范文
2014/08/29 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
升学宴学生致辞
2015/09/29 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers