jquery登录的异步验证操作示例


Posted in jQuery onMay 09, 2019

本文实例讲述了jquery登录的异步验证操作。分享给大家供大家参考,具体如下:

//定义一个json
var validate = {
  username : false,
  pwd   : false,
  pwded  : false,
  verify  : false,
  loginUsername : false,
  loginPwd :false
}
//存储错误信息
var $msg = "";
//验证注册表单
$(function(){
  //获取表单对象
  var register = $('form[name=register');
  register.submit(function(){
    var isOK = validate.username && validate.pwd && validate.pwded && validate.verify;
    if(isOK){
      return true;
    }
    //点击提交按钮依次触发失去焦点再次验证
    $('input[name=username]',register).trigger('blur');
    $('input[name=pwd]',register).trigger('blur');
    $('input[name=pwded]',register).trigger('blur');
    $('input[name=verify]',register).trigger('blur');
    return false;
  });
  //验证用户名
  $('input[name=username]',register).blur(function(){
    var username = $(this).val();
    var span = $(this).next();
    //用户名不能为空
    if(username == ''){
      msg = '用户名不能为空';
      span.html(msg).addClass('error');
      validate.username = false;
      return;
    }
    //正则判断
    if(!/^\w{2,14}$/g.test(username)){
      msg = '必须是2-14个字符,字母,数字,下划线';
      span.html(msg).addClass('error');
      validate.username = false;
      return;
    }
    //异步验证用户名是否存在
    $.post(APP + '/Reg/ajax_username',{username : username},function(status){
      console.log(status);
      if(status){
        msg = '通过检测';
        span.html(msg).removeClass('error');
        validate.username = true;
      }else{
        msg = '用户名已经存在';
        span.html(msg).addClass('error');
        validate.username = false;
      }
    },'json');
  });
  //验证密码
  $('input[name=pwd]',register).blur(function(){
    var pwd = $(this).val();
    var span = $(this).next();
    //密码不能为空
    if(pwd == ''){
      msg = '密码不能为空';
      span.html(msg).addClass('error');
      validate.pwd = false;
      return;
    }
    //正则验证
    if(!/^\w{6,20}$/g.test(pwd)){
      msg = '密码必须由6-20个字母,数字,或者下划线组成';
      span.html(msg).addClass('error');
      validate.pwd = false;
      return;
    }
    msg = '通过检测';
    span.html(msg).removeClass('error');
    validate.pwd = true;
  });
  //确认密码
  $('input[name=pwded]',register).blur(function(){
    var pwded = $(this).val();
    var span = $(this).next();
    //确认密码
    if(pwded == ''){
      msg = '请确认密码';
      span.html(msg).addClass('error');
      validate.pwded = false;
      return;
    }
    //判断密码是否一致
    if(pwded != $('input[name=pwd]',register).val()){
      msg = '密码不一致';
      span.html(msg).addClass('error');
      validate.pwded = false;
      returnl;
    }
    msg = '通过检测';
    span.html(msg).removeClass('error');
    validate.pwded = true;
  });
  //验证验证码
  $('input[name=verify]',register).blur(function(){
    var verify = $(this).val();
    var span = $(this).next().next();
    //不能为空
    if(verify == ''){
      msg = '请输入验证码';
      span.html(msg).addClass('error');
      validate.verify = false;
      return;
    }
    //异步判断验证码
    $.post(APP + '/Reg/ajax_code',{verify : verify},function(status){
      if(status){
        msg = '通过检测';
        span.html(msg).removeClass('error');
        validate.verify = true;
      }else{
        msg = '验证码错误';
        span.html(msg).addClass('error');
        validate.verify = false;
        return;
      }
    },'json');
  });
  //登录form表单验证
  var login = $('form[name=login]');
  //登录提交事件
  login.submit(function(){
    if(validate.loginUsername && validate.loginPwd){
      return true;
    }
    //依次触发失去焦点动作
    $('input[name=username]',login).trigger('blur');
    $('input[name=pwd',login).trigger('blur');
    return false;
  });
  //验证登录用户名
  $('input[name=username]',login).blur(function(){
    var username = $(this).val();
    var span = $('#login-msg');
    //判断是否为空
    if(username == ''){
      msg = '请输入账号';
      span.html(msg).addClass('error');
      validate.loginUsername = false;
      return;
    }
    msg = '';
    span.html(msg);
    validate.loginUsername = true;
  });
  //验证登录密码
  $('input[name=pwd]',login).blur(function(){
    var pwd = $(this).val();
    var span = $('#login-msg');
    //判断登录密码是否为空
    if(pwd == ''){
      msg = '请输入密码';
      span.html(msg).addClass('error');
      validate.loginPwd = false;
      return;
    }
    var data = {
        username : $('input[name=username]',login).val(),
        pwd : pwd
      };
    //异步验证
    $.post(APP + '/Login/ajax_login',data,function(status){
      if(status){
        msg = '';
        span.html(msg).removeClass('error');
        validate.loginUsername = true;
        validate.loginPwd = true;
      }else{
        msg = '用户名或密码错误';
        span.html(msg).addClass('error');
        validate.loginUsername = false;
        validate.loginPwd = false;
      }
    },'json');
    msg = '';
    span.html(msg);
    validate.loginPwd = true;
  });
})
jQuery 相关文章推荐
jQuery Tree Multiselect使用详解
May 02 jQuery
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 jQuery
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
jQuery实现表格隔行换色
Sep 01 jQuery
jquery获取img的src值实例介绍
Jan 16 jQuery
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 jQuery
jQuery操作事件完整实例分析
Jan 10 jQuery
jquery检测上传文件大小示例
Apr 26 jQuery
jQuery实现广告显示和隐藏动画
Jul 04 jQuery
jQuery动态生成的元素绑定事件操作实例分析
May 04 #jQuery
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
May 04 #jQuery
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
Apr 28 #jQuery
jQuery对底部导航进行跳转并高亮显示的实例代码
Apr 23 #jQuery
详解jquery和vue对比
Apr 16 #jQuery
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 #jQuery
详解jQuery中的getAll()和cleanData()
Apr 15 #jQuery
You might like
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
JavaScript延迟加载
2021/03/09 Javascript
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
2016/10/24 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
Python----数据预处理代码实例
2019/03/20 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
教师找工作推荐信
2013/11/23 职场文书
采购部岗位职责
2013/11/24 职场文书
水电站项目建议书
2014/05/12 职场文书
培训研修方案
2014/06/06 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js