基于Bootstrap+jQuery.validate实现表单验证


Posted in Javascript onMay 30, 2016

这大概是一种惯例,学习前台后台最开始接触的业务都是用户注册和登录。现在社会坚持以人为本的理念,在网站开发过程同样如此。User是我们面对较多的对象,也是较核心的对象。最开始的用户注册和登陆这块,也就尤为重要。

用户注册和登录其实往往比我们想象的难。就比如表单校验,里面涵盖的内容其实挺多,就前台而言,你需要了解:

1.正则表达式的基本了解

其实正则并不难,并且在学会后能带给你极大的成就感,享受那种事半功倍的效果吧。

2.ajax异步请求

在验证用户名是否存在、用户登录时账号或者密码错误时给出相应的提示。

3.一些方便的验证库,比如jQuery.validate

正因为如此普遍的需求和一定的复杂性,bootstrap表单和jQuery.validate表单校验等一些优秀的类库专为人们解决UI、表单校验问题。

下面就是我用bootstrap+jQuery.validate做的界面:

基于Bootstrap+jQuery.validate实现表单验证

基于Bootstrap+jQuery.validate实现表单验证

一、bootstrap3基本表单和水平表单

1、基本表单

基本的表单结构是 Bootstrap 自带的,下面列出了创建基本表单的步骤:

向父元素<form> 添加 role="form"。
把标签和控件放在一个带有 class .form-group 的 <div> 中。这是获取最佳间距所必需的。
向所有的文本元素 <input>、<textarea> 和 <select> 添加 class .form-control。

<form role="form">
 <div class="form-group">
  <label for="name">名称</label>
  <input type="text" class="form-control" id="name"
   placeholder="请输入名称">
 </div>
</form>

效果如下:

基于Bootstrap+jQuery.validate实现表单验证

2、水平表单

在了解水平表单之间,我们应该对bootstrap的网格系统有所了解。

Bootstrap 包含了一个响应式的、移动设备优先的、不固定的网格系统,可以随着设备或视口大小的增加而适当地扩展到 12 列。它包含了用于简单的布局选项的预定义类,也包含了用于生成更多语义布局的功能强大的混合类。

响应式网格系统随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列,也就是说它是以百分比定义宽度的。

基于Bootstrap+jQuery.validate实现表单验证

水平表单与其他表单不仅标记的数量上不同,而且表单的呈现形式也不同。如需创建一个水平布局的表单,请按下面的几个步骤进行:

步骤1:向父 <form> 元素添加 class .form-horizontal。
步骤2:把标签和控件放在一个带有 class .form-group 的 <div> 中。
步骤3:向标签添加 class .control-label。

<form class="form-horizontal" role="form">
 <div class="form-group">
  <label for="firstname" class="col-sm-2 control-label">名字</label>
  <div class="col-sm-10">
   <input type="text" class="form-control" id="firstname"
   placeholder="请输入名字">
  </div>
 </div>
</form>

效果如下:

基于Bootstrap+jQuery.validate实现表单验证

二、jQuery.validate 自定义校验方法

1、自定义校验方法

// 手机号码验证
jQuery.validator.addMethod("isPhone", function(value, element) {
 var length = value.length;
 return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/.test(value));
}, "请正确填写您的手机号码。");

2、调用自定义校验

rules : {
 phone : {
   required : true,
   isPhone : true
  }
}

3、自定义错误显示

基于Bootstrap+jQuery.validate实现表单验证

三、register.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>注册</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
 
<link type="text/css" href="jslib/bootstrap-3.3.5/css/bootstrap.min.css" rel="stylesheet">
 
<script src="jslib/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="scripts/form.js" type="text/javascript"></script>
<script src="jslib/jQuery.validate/jquery.validate.js" type="text/javascript"></script>
<script src="jslib/bootstrap-3.3.5/bootstrap.min.js" type="text/javascript"></script>
<style type="text/css">
#register-form{
 border: 1px solid rgb(197, 197, 197);
 width: 1000px;
 margin: auto;
 border-image: none;
 padding: 30px;
 border-radius: 3px;
}
</style>
 
</head>
<body>
 <h1 class="text-center text-danger">用户注册</h1><br>
 <form id="register-form" role="form" class="form-horizontal" method="get">
  <div class="form-group">
   <label class="col-sm-2 control-label" for="firstname">用户名:</label>
   <div class="col-sm-5">
    <input class="form-control" id="firstname" name="firstname" />
   </div>
  </div>
  <div class="form-group">
   <label class="col-sm-2 control-label" for="password">密码:</label>
   <div class="col-sm-5">
    <input class="form-control" id="password" name="password" type="password" />
   </div>
  </div>
  <div class="form-group">
   <label class="col-sm-2 control-label" for="confirm_password">确认密码:</label>
   <div class="col-sm-5">
    <input class="form-control" id="confirm_password" name="confirm_password" type="password" />
   </div>
  </div>
  <div class="form-group">
   <label class="col-sm-2 control-label" for="email">E-Mail:</label>
   <div class="col-sm-5">
    <input class="form-control" id="email" name="email" />
   </div>
  </div>
  <div class="form-group">
   <label class="col-sm-2 control-label" for="phone">手机号码:</label>
   <div class="col-sm-5">
    <input class="form-control" id="phone" name="phone" />
   </div>
  </div>
  <div class="form-group">
   <label class="col-sm-2 control-label" for="tel">固定电话:</label>
   <div class="col-sm-5">
    <input class="form-control" id="tel" name="tel" />
   </div>
  </div>
  <div class="form-group">
   <label class="col-sm-2 control-label" for="address">家庭住址:</label>
   <div class="col-sm-5">
    <input class="form-control" id="address" name="address" />
   </div>
  </div>
  <div class="form-group">
   <div class="col-md-offset-2 col-md-10">
    <button type="submit" class="btn btn-primary btn-sm">注册</button>
    <button type="reset" class="btn btn-primary btn-sm">重置</button>
   </div>
  </div>
 </form>
</body>
</html>

四、form.js

$(document).ready(function() {
 // 手机号码验证
 jQuery.validator.addMethod("isPhone", function(value, element) {
  var length = value.length;
  return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/.test(value));
 }, "请正确填写您的手机号码。");
 
 // 电话号码验证
 jQuery.validator.addMethod("isTel", function(value, element) {
  var tel = /^(\d{3,4}-)?\d{7,8}$/g; // 区号-3、4位 号码-7、8位
  return this.optional(element) || (tel.test(value));
 }, "请正确填写您的电话号码。");
 // 匹配密码,以字母开头,长度在6-12之间,必须包含数字和特殊字符。
 jQuery.validator.addMethod("isPwd", function(value, element) {
  var str = value;
  if (str.length < 6 || str.length > 18)
   return false;
  if (!/^[a-zA-Z]/.test(str))
   return false;
  if (!/[0-9]/.test(str))
   return fasle;
  return this.optional(element) || /[^A-Za-z0-9]/.test(str);
 }, "以字母开头,长度在6-12之间,必须包含数字和特殊字符。");
 
 $("#register-form").validate({
  errorElement : 'span',
  errorClass : 'help-block',
 
  rules : {
   firstname : "required",
   email : {
    required : true,
    email : true
   },
   password : {
    required : true,
    isPwd : true
   },
   confirm_password : {
    required : true,
    isPwd : true,
    equalTo : "#password"
   },
   phone : {
    required : true,
    isPhone : true
   },
   tel : {
    isTel : true
   },
   address : {
    minlength : 10
   }
  },
  messages : {
   firstname : "请输入姓名",
   email : {
    required : "请输入Email地址",
    email : "请输入正确的email地址"
   },
   password : {
    required : "请输入密码",
    minlength : jQuery.format("密码不能小于{0}个字 符")
   },
   confirm_password : {
    required : "请输入确认密码",
    minlength : "确认密码不能小于5个字符",
    equalTo : "两次输入密码不一致不一致"
   },
   phone : {
    required : "请输入手机号码"
   },
   tel : {
    required : "请输入座机号码"
   },
   address : {
    required : "请输入家庭地址",
    minlength : jQuery.format("家庭地址不能少于{0}个字符")
   }
  },
  //自定义错误消息放到哪里
  errorPlacement : function(error, element) {
   element.next().remove();//删除显示图标
   element.after('<span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>');
   element.closest('.form-group').append(error);//显示错误消息提示
  },
  //给未通过验证的元素进行处理
  highlight : function(element) {
   $(element).closest('.form-group').addClass('has-error has-feedback');
  },
  //验证通过的处理
  success : function(label) {
   var el=label.closest('.form-group').find("input");
   el.next().remove();//与errorPlacement相似
   el.after('<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>');
   label.closest('.form-group').removeClass('has-error').addClass("has-feedback has-success");
   label.remove();
  },
 
 });
});

源码下载:Bootstrap+jQuery.validate实现表单验证

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是Bootstrap+jQuery.validate实现表单验证相关知识介绍,希望大家可以熟练掌握,设计自己的表单验证。

Javascript 相关文章推荐
转义字符(\)对JavaScript中JSON.parse的影响概述
Jul 17 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 Javascript
js实现的标题栏新消息闪烁提示效果
Jun 06 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 jQuery
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 Javascript
Vue实战之vue登录验证的实现代码
Oct 31 Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 Javascript
解决vue无法设置滚动位置的问题
Oct 07 Javascript
小程序实现订单倒计时功能
Apr 23 Javascript
vue实现条件叠加搜索的解决方法
May 28 Javascript
jquery获取form表单input元素值的简单实例
May 30 #Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 #Javascript
使用JQuery 加载页面时调用JS的实现方法
May 30 #Javascript
Bootstrap开关(switch)控件学习笔记分享
May 30 #Javascript
jquery获取复选框checkbox的值实现方法
May 30 #Javascript
JS在onclientclick里如何控制onclick的执行
May 30 #Javascript
JS获取复选框的值,并传递到后台的实现方法
May 30 #Javascript
You might like
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
php牛逼的面试题分享
2013/01/18 PHP
php curl选项列表(超详细)
2013/07/01 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
2017/08/17 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
PHP CURL与java http使用方法详解
2018/01/26 PHP
php实现微信支付之现金红包
2018/05/30 PHP
js模拟弹出效果代码修正版
2008/08/07 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
vue获取DOM元素并设置属性的两种实现方法
2017/09/30 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
python计算两个地址之间的距离方法
2018/06/09 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
2016新年慰问信范文
2015/03/25 职场文书
公司出纳岗位职责
2015/03/31 职场文书
2015七夕情人节宣传语
2015/07/14 职场文书
Java 实战项目之家居购物商城系统详解流程
2021/11/11 Java/Android