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中each循环的简单回滚操作
May 05 jQuery
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
jQuery选择器_动力节点Java学院整理
Jul 05 jQuery
运用jQuery写的验证表单(实例讲解)
Jul 06 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
jQuery实现的表格前端排序功能示例
Sep 18 jQuery
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
jQuery滑动效果实现方法分析
Sep 05 jQuery
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
jquery实现掷骰子小游戏
Oct 24 jQuery
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 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的知识
2006/11/17 PHP
PHP新手入门学习方法
2011/05/08 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
清空元素html("") innerHTML="" 与 empty()的区别和应用(推荐)
2017/08/14 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
Python实现的ini文件操作类分享
2014/11/20 Python
python编程开发之日期操作实例分析
2015/11/13 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
基于python实现名片管理系统
2018/11/30 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
简单了解Django项目应用创建过程
2020/07/06 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
Lucene推荐的分页方式是什么?
2015/12/07 面试题
大学生党员自我批评
2014/02/14 职场文书
商务代表岗位职责
2015/02/15 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
Pytest之测试命名规则的使用
2021/04/16 Python