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 dataTable 后台加载数据并分页实例代码
Jun 07 jQuery
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
Jan 25 jQuery
jQuery-ui插件sortable实现自由拖动排序
Dec 01 jQuery
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
jQuery each和js forEach用法比较
Feb 27 jQuery
使用jquery-easyui的布局layout写后台管理页面的代码详解
Jun 19 jQuery
jquery分页优化操作实例分析
Aug 23 jQuery
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 jQuery
jquery实现上传图片功能
Jun 29 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
php FPDF类库应用实现代码
2009/03/20 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
php和vue配合使用技巧和方法
2019/05/09 PHP
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
python中管道用法入门实例
2015/06/04 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
详解Python 解压缩文件
2019/04/09 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
心理健康课教学反思
2014/02/13 职场文书
应届生求职信范文
2014/05/26 职场文书
运动会口号8字
2014/06/07 职场文书
思想政治表现评语
2015/01/04 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
公司晚会主持词
2019/04/17 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL