jQuery前端基本验证(二)

简介: jQuery前端基本验证(二)

一 用Bootstrap美化页面,采用网络端引用


<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>封装插件+Bootstrap进行验证</title>
<!-- 引入网络端的Juqery插件和Bootstrap插件 主要是方便书写 -->
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">  
  <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <!-- 引入自定义的js -->
  <script src="Plugins/register.js"></script>
</head>
<body>
  <div class="container">
    <div class="row">
      <h2 class="col-md-10 text-center">Bootstrap+自定义验证</h2>
    </div>
    <div class="row">
      <!-- 里面是具体的表单 -->
      <form class="form-horizontal" id="myform" method="post"
        action="#">
        <!-- 第一行用户名 -->
        <div class="form-group">
          <label for="loginName" class="col-md-2 control-label">用户名:</label>
          <div class="col-md-6 has-feedback">
            <input type="text" class="form-control inputClass" id="loginName"
              placeholder="请输入你的用户名" name="loginName"
              value=""> <span
              class="glyphicon glyphicon-user form-control-feedback"></span>
          </div>
          <label
            class="col-md-4 labelTitle text-danger glyphicon glyphicon-remove"
            id="loginNameTitle"></label>
        </div>
        <!-- 第二行密码-->
        <div class="form-group">
          <label for="password" class="col-md-2 control-label ">密码</label>
          <div class="col-md-6">
            <input type="password" class="form-control inputClass"
              id="password" placeholder="密码区分大小写" name="password"
              value=""><span class="glyphicon glyphicon-lock form-control-feedback"></span>
          </div>
          <label class="col-md-4 labelTitle text-danger glyphicon glyphicon-remove"
            id="passwordTitle"></label>
        </div>
        <!-- 第二行密码-->
        <div class="form-group">
          <label for="email" class="col-md-2 control-label ">邮箱</label>
          <div class="col-md-6">
            <input type="text" class="form-control inputClass"
              id="email" placeholder="请输入正确的邮箱" name="email"
              value="">
          </div>
          <label style="margin-left: -40px; margin-top: 10px;"></label> 
          <label class="col-md-4 labelTitle text-danger glyphicon glyphicon-remove"
            id="emailTitle"></label>
        </div>
        <!-- 该登录和重置的框了 -->
        <div class="form-group">
          <div class="col-md-3 col-md-offset-3">
            <input type="submit" class="btn btn-success btn-block" id="submit"
              value="登录" style="margin-left: -30px" />
          </div>
          <div class="col-md-2 col-md-offset-1">
            <button type="reset" class="btn btn-success btn-sm"
              style="margin-left: -30px">重置</button>
          </div>
        </div>
      </form>
    </div>
  </div>
</body>
</html>


重启服务器,检查页面,是这个样式的。


20181010210028242.png


其中页面中,需要注意的点有三个:


1. 每一个input标签里面,class 都有一个.inputClass 的类。 对每一个需要验证的input框都添加一个inputClass。


2. 每一个input标签都有一个它所对应的label标签,这里显示提示信息,且这个标签的id命名为. input标签的Id+Title。


3. 每一个对应的label标签,都有一个对应的labelTitle的类。


二    添加基本JS  validateJS.

在plugins文件夹下面添加一个validateJS.js, 里面放置的内容是:


validateJS.js


/**
 * 这是一个自定义封装的验证
 */
$(function(){
  /**
   * 1.对每一个labelError的标签进行循环遍历验证
   */
  $(".labelTitle").each(function(){
     showTitle($(this));
  })
  /**
   * 2.当标签移入时进行移入的判断
   */
  $(".inputClass").focus(function(){
    //1.获取进入的input框所在的id  使inputid与LabelId有统一的关系
    var id=$(this).attr("id");
    //2. 根据id获得当前的标签
    var $label=$("#"+id+"Title");
    //3. 将该标签的内容置空
    $label.text("");
    //4. 调用方法,看这个标签是否显示
    showTitle($label);
  })
  /**
   * 3.当鼠标移出这个标签时,进行移出的验证判断.
   */
  $(".inputClass").blur(function(){
    //1. 得到移出标签的这个id
    var id=$(this).attr("id");
    //设置要执行的是哪一个方法  toUpperCase() substring  不要忘记()
    //2. 根据id去拼凑function的方法,这个方法起得应该是: loginName--->validateLoginName();
    var funName="validate"+id.substring(0,1).toUpperCase()+id.substring(1)+"()";
    //alert(funName);
    //3.用eval()去验证这个方法
    eval(funName);
  })
})
/**
 * 4 写showError方法,去判断这个标签是否显示。
 * 如果这个标签有值,则显示。
 * 如果没有值,则不显示.
 */
function showTitle(ele){
  //看是否有文字,如果有文字,则显示。没有,则隐藏
  var text=trim(ele.text());
  /**
   * 1. 如果输入的值为null,那么就让这个标签不显示。
   * 如果输入的是ok,那么就显示一个对号。
   * 如果输入的是oks开头,那么显示对号的同时,显示后面的语句。
   * 如果是其它的,就表示错误信息,显示错号和错误信息。
   */
  if(!text){
    //什么都不显示
    ele.css("display","none");
  }else if (text=='ok'){
    //清空信息
    ele.text('');
    //显示信息框
    ele.css("display","");
    //显示对号
    addOk(ele);
  }else if (text.indexOf('oks')==0){
    //显示之后的信息
    ele.text(text.substr(3,text.length));
    ele.css("display","");
    //显示对号
    addOk(ele);
  }else{
    ele.css("display","");
    addRemove(ele);
  }
}
/**
 * 5 添加对号
 */
function addOk(ele){ 
  //移除错误的
  ele.removeClass('glyphicon-remove').removeClass('glyphicon');
  //添加正确的
  ele.addClass('glyphicon').addClass('glyphicon-ok');
}
/**
 * 6 添加错误号
 */
function addRemove(ele){ 
  //移除错误的
  ele.removeClass('glyphicon-ok').removeClass('glyphicon');
  //添加正确的
  ele.addClass('glyphicon').addClass('glyphicon-remove');
}
/**
 * 7 去除空格
 */
function trim(str) {
  if (str == null) {
      return "";
  }
  return str.replace(/^\s*(.*?)[\s\n]*$/g,'$1');   
}


在Bootstrap里面添加这个JS


<!-- 引入自定义的js -->
  <script src="Plugins/validateJS.js"></script>


重启服务器,进行相应的查看信息,发现*号已经不见了。


20181010210640524.png


三  添加页面相对应的验证


在页面login.jsp同级的目录下创建一个loginValidate.js的验证页面。这里只表示验证,没有其他的JS操作,如验证码操作,忘记密码操作等。 将其引入到jsp页面。 这个loginValidate.js,要位于validateJS.js的后面。


<!-- 引入登录页面的验证 -->
  <script src="loginValidate.js"></script>


在loginValidate.js页面中,直接写验证的方法。 注意,这个验证方法的命名,应该是validate+Id首字母大写名称.


如id为 password,则验证为validatePassword, id为email,则验证为validateEmail方法。


这里只验证password和email方法。


四  验证password字段  validatePassword


使密码显示对号的同时,显示后面的信息。


/*
 * 对密码进行的相关验证
 */
function validatePassword(){
  //设置对象
  var id="password";
  //得到值
  var value=$("#"+id).val();
  //设置标签Label的对象.
  var $label=$("#"+id+"Title");
  if(!value){
    $label.text(" 密码不能为空");
    showTitle($label);
    return false;
  }
  if(!/^\w{6,20}$/.test(value)){
    //alert("不符合");
    //如果为空,则使其对应的label的text进行设置,调用showTitle()方法.
    $label.text(" 密码长度在6~20之间");
    showTitle($label);
    //返回false
    return false;
  }else{
    $label.text("oks密码输入正确");
    showTitle($label);
    return true;
  }
}


五  验证Email字段, validateEmail


/*
 * 对邮箱进行的相关验证
 */
function validateEmail(){
  //设置对象
  var id="email";
  //得到值
  var value=$("#"+id).val();
  //设置标签Label的对象.
  var $label=$("#"+id+"Title");
  if(!value){
    //如果为空,则使其对应的label的text进行设置,调用showTitle()方法.
    $label.text(" 邮箱地址不能为空");
    showTitle($label);
    //返回false
    return false;
  }
  if(!/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(value)){
    //alert("不符合");
    //如果为空,则使其对应的label的text进行设置,调用showTitle()方法.
    $label.text(" 邮箱格式不正确");
    showTitle($label);
    //返回false
    return false;
  }else{
    $label.text("ok");
    showTitle($label);
    return true;
  }
}


六  重启服务器,进行相关的验证检测


如果不输入值的话:


20181010214229592.png


如果输入的是错误的值的话:


20181010214255251.png


输入正确的值的话:


20181010214324971.png


一个显示提示信息,一个不显示提示信息。


然而,现在仍然有一个比较大的问题,就是如果错误时,点击按钮,仍然是可以提交的。


七  解决Form表单的验证


在Juqery中进行相应的添加,也就是在loginValidate.js中,添加一个Jquery方法。


$(function(){
  //实现在提交之时,对所有的input进行再次的判断,放在jquery中.
  $("#myform").submit(function(){
    //return true;
    return validatePassword()&&validateEmail();
  })
})


此时,如果页面上显示错误,


20181010214653515.png


是无法进行提交操作的。


八  总结


这个提示比较好,页面也相对美观,但是如果提示信息过长了呢? 那么label的Title标签不也是要更长吗? 而且,这些验证修改时,也相对来说比较麻烦。


九 loginValidate.js文件


/**
 * 这里表示登录页面的验证
 */
$(function(){
  //实现在提交之时,对所有的input进行再次的判断,放在jquery中.
  $("#myform").submit(function(){
    //return true;
    return validatePassword()&&validateEmail();
  })
})
/*
 * 对密码进行的相关验证
 */
function validatePassword(){
  //设置对象
  var id="password";
  //得到值
  var value=$("#"+id).val();
  //设置标签Label的对象.
  var $label=$("#"+id+"Title");
  if(!value){
    $label.text(" 密码不能为空");
    showTitle($label);
    return false;
  }
  if(!/^\w{6,20}$/.test(value)){
    //alert("不符合");
    //如果为空,则使其对应的label的text进行设置,调用showTitle()方法.
    $label.text(" 密码长度在6~20之间");
    showTitle($label);
    //返回false
    return false;
  }else{
    $label.text("oks密码输入正确");
    showTitle($label);
    return true;
  }
}
/*
 * 对邮箱进行的相关验证
 */
function validateEmail(){
  //设置对象
  var id="email";
  //得到值
  var value=$("#"+id).val();
  //设置标签Label的对象.
  var $label=$("#"+id+"Title");
  if(!value){
    //如果为空,则使其对应的label的text进行设置,调用showTitle()方法.
    $label.text(" 邮箱地址不能为空");
    showTitle($label);
    //返回false
    return false;
  }
  if(!/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(value)){
    //alert("不符合");
    //如果为空,则使其对应的label的text进行设置,调用showTitle()方法.
    $label.text(" 邮箱格式不正确");
    showTitle($label);
    //返回false
    return false;
  }else{
    $label.text("ok");
    showTitle($label);
    return true;
  }
}


谢谢!!!

相关文章
|
9天前
|
JSON 缓存 前端开发
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
22 3
|
1月前
|
前端开发 数据安全/隐私保护
angular前端基本页面验证
angular前端基本页面验证
28 1
|
1月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
78 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
|
1月前
|
JavaScript 数据安全/隐私保护
jQuery Password Validation(密码验证)
jQuery Password Validation(密码验证)
20 3
|
2月前
|
JSON 缓存 前端开发
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
25 2
|
1月前
|
JavaScript 前端开发 API
【前端基础篇】JavaScript之jQuery介绍
【前端基础篇】JavaScript之jQuery介绍
56 0
|
3月前
|
前端开发 JavaScript
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
这篇文章介绍了使用AJAX技术将前端页面中表单接收的多个参数快速便捷地传输到后端servlet的方法,并通过示例代码展示了前端JavaScript中的AJAX调用和后端servlet的接收处理。
这篇文章介绍了如何使用form表单结合Bootstrap格式将前端数据通过action属性提交到后端的servlet,包括前端表单的创建、数据的一级和二级验证,以及后端servlet的注解和参数获取。
|
3月前
|
JavaScript 前端开发 程序员
后端程序员的前端必备-jQuery核心学习笔记
后端程序员的前端必备-jQuery核心学习笔记
57 13
|
3月前
|
前端开发 开发者 UED
数据校验的艺术:揭秘JSF如何将前端与后端验证合二为一,打造无缝用户体验
【8月更文挑战第31天】JavaServer Faces(JSF)是构建企业级Web应用的Java规范,提供了丰富的组件和API,便于快速搭建用户界面。JSF验证框架基于JavaBean验证API(JSR 303/JSR 380),利用注解如`@NotNull`、`@Size`等在模型类上定义验证规则,结合前端的`&lt;h:inputText&gt;`和`&lt;h:message&gt;`标签展示错误信息。
40 0
|
3月前
|
前端开发 数据库 Python
中后台前端开发问题之验证用户提供的uid和token的有效性如何解决
中后台前端开发问题之验证用户提供的uid和token的有效性如何解决
19 0
下一篇
无影云桌面