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插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
Apr 02 jQuery
jQuery树插件zTree使用方法详解
May 02 jQuery
jQuery Autocomplete简介_动力节点Java学院整理
Jul 17 jQuery
JQuery元素快速查找与操作
Apr 22 jQuery
JQuery的加载和选择器用法简单示例
May 13 jQuery
jQuery操作cookie的示例代码
Jun 05 jQuery
JavaScript前端页面搜索功能案例【基于jQuery】
Jul 10 jQuery
jquery 遍历hash操作示例【基于ajax交互】
Oct 12 jQuery
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
jQuery带控制按钮轮播图插件
Jul 31 jQuery
jQuery实现可以扩展的日历
Dec 01 jQuery
jQuery实现购物车全功能
Jan 11 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
CentOS安装php v8js教程
2015/02/26 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
iframe调用父页面函数示例详解
2014/07/17 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
NumPy中的维度Axis详解
2019/11/26 Python
python dict如何定义
2020/09/02 Python
Python类型转换的魔术方法详解
2020/12/23 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
太太口服液广告词
2014/03/20 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
2014年收银工作总结
2014/11/13 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
nginx配置虚拟主机的详细步骤
2021/07/21 Servers