BootStrap与validator 使用笔记(JAVA SpringMVC实现)


Posted in Javascript onSeptember 21, 2016

BootStrap 是一个强大的前面框架,它用优雅的方式解决了网页问题。最近正在使用其开发网站的表单验证,一点体会记录如下:

注:本文中借鉴了博客Franson 的文章使用bootstrap validator的remote验证代码经验分享(推荐)

一、准备工作

1.你的网站环境中要有 BootStrap,中文网地址:http://www.bootcss.com/

2.下载BootStrap Validator相关材料,地址:http://bv.doc.javake.cn/

当然,如果你不想一个一个下载到您的项目中的话,可以引入CDN,CDN可以用bootstrap官方的,也可以百度上搜索下“BootStrap CDN”,你一定可以理解是怎么使用。下面是我的引入代码:

<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
<!-- 可选的Bootstrap主题文件(一般不用引入) -->
<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<!-- Bootstrap Validator JS文件 -->
<script src="//cdn.bootcss.com/bootstrap-validator/0.5.3/js/bootstrapValidator.min.js"></script><!-- Bootstrap Validator 样式文件 -->
<link href="//cdn.bootcss.com/bootstrap-validator/0.5.3/css/bootstrapValidator.min.css" rel="stylesheet">
<!-- Bootstrap Validator 中文语言包 -->
<script src="//cdn.bootcss.com/bootstrap-validator/0.5.3/js/language/zh_CN.min.js"></script>

二、初步应用。

这里直接引用BootStrap Validator 官方的例子,先看HTML代码:

<form class="form-horizontal">
<div class="form-group">
<label class="col-lg-3 control-label">Username</label>
<div class="col-lg-9">
<input type="text" class="form-control" name="username" />
</div>
</div>
<div class="form-group">
<label class="col-lg-3 control-label">Email address</label>
<div class="col-lg-9">
<input type="text" class="form-control" name="email" />
</div>
</div>
</form>

一段很普通的BootStrap网页代码,一个表单,里面是用户名,邮箱地址二个INPUT

BootStrap验证是根据表单控件的name值进行检验的,下面是JS代码:

<script>
$(document).ready(function() {
$('.registerForm').bootstrapValidator({
message: 'This value is not valid', //验证错误时的信息
feedbackIcons: { //验证时显示的图标
valid: 'glyphicon glyphicon-ok', //正确图标
invalid: 'glyphicon glyphicon-remove', //错误图标
validating: 'glyphicon glyphicon-refresh' //正在更新图标
},
fields: { //要验证哪些字段
username: { //与表单里input的name属性对应
message: 'The username is not valid', //验证错误时的信息,当然这里是可以使用中文的
validators: {
notEmpty: { //非空判断
message: 'The username is required and cannot be empty' //验证错误时的信息,
},
stringLength: { //长度判断
min: 6, //不得小于
max: 30, //不得超过
message: 'The username must be more than 6 and less than 30 characters long' //验证错误时的信息,
},
regexp: { //正则表达式判断 
regexp: /^[a-zA-Z0-9_]+$/, //表达式内容
message: 'The username can only consist of alphabetical, number and underscore' //验证错误时的信息,
}
}
},
email: {
validators: {
notEmpty: {
message: 'The email is required and cannot be empty'
},
emailAddress: { //是不是正确的email格式
message: 'The input is not a valid email address' 
}
}
}
}
});
});
</script>

BootStrap Validator 已经定义好很多验证方式,每一种方式的用法参见:http://bv.doc.javake.cn/validators/

其中几个常用的,提一下,其实一看就懂,很好理解:

BootStrap与validator 使用笔记(JAVA SpringMVC实现)

三、进阶应用

如果不想用默认的模板,可以使用以下个方式来进行一些自定义验证

callback方式,API地址:http://bv.doc.javake.cn/validators/callback/

callback方式可以让您自定义函数用于判断,下面看个例子

HTML(内容就是显示输入运算结果)

<form id="captchaForm" class="form-horizontal">
<div class="form-group">
<label class="col-lg-3 control-label" id="captchaOperation"></label>
<div class="col-lg-2">
<input type="text" class="form-control" name="captcha" />
</div>
</div>
</form>

来看看JS

<script>
$(document).ready(function() {
// 随机取min,max中间的一个数
function randomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
};
// 生成随机两个数相加的文字显示内容,显示到capchaOperation中去
$('#captchaOperation').html([randomNumber(1, 100), '+', randomNumber(1, 200), '='].join(' ')); 
$('#captchaForm').bootstrapValidator({ //验证
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
captcha: {
validators: {
callback: { //callback方式
message: 'Wrong answer',
callback: function(value, validator) { //您可以在这里实现自定义功能
// Determine the numbers which are generated in captchaOperation







//这里面value就是input里输入的值 var items = $('#captchaOperation').html().split(' '),
sum = parseInt(items[0]) + parseInt(items[2]);
return value == sum;
}
}
}
}
}
});
});
</script>

这样当默认的方式不能满足您的要求的时候就可以用callback方式,自己实现函数用于完成特殊的判断,比如判断中国居民身份证号是否正确……

四、异步验证

最常见的应用就是验证用户名是否注册过,下面看我的程序中的代码:

HTML

<form class="form-horizontal">
<div class=" form-group has-feedback has-error">
<label for="loginName" class="col-sm-3 control-label ">用户名:</label>
<div class="col-sm-5">
<div class="input-group">
<input type="text" class="form-control" id="loginName" name="loginName" placeholder="请输入您登录用的用户名">
<span class="input-group-addon">  </span>
</div>
</div>
</div>
</form>

JS

<script>
$(function () {
$('form').bootstrapValidator({
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'},
fields: {
loginName: {
message: '用户名验证失败',
validators: {
notEmpty: {message: '用户名不能为空'},
stringLength: {min: 6,max: 18,message: '用户名长度必须在6到18位之间'},
regexp: {regexp: /^[a-zA-Z0-9_]+$/,message: '用户名只能包含大写、小写、数字和下划线'},
remote: {
message: '用户名已经存在',
url: '/ajax/checknewuser', //Action的地址,这里我试过,应该是不能加入EL,但网上看到可以加<%=%>输出某个值,我试验没成功,不知道为什么
data:{ //传参数
username:function(){return $("#loginName").val()}, //username参数名,不用引号,如果想传入特定控件的值一定加入function,这样才能把值传入,不知道为什么……
},
delay : 2000,//每输入一个字符,就发ajax请求,服务器压力还是太大,设置2秒发送一次ajax(默认输入一个字符,提交一次,服务器压力太大)
type: 'POST'//请求方式
}
}
}
}
});
});
</script>

Action 用 SpringMvc实现

package com.aocshallo.actions.ajax;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/ajax")
public class AjaxAction extends BaseAction {
public AjaxAction() {
// TODO Auto-generated constructor stub
}
@RequestMapping("/checknewuser")
public void checkNewUser(HttpSession session,HttpServletRequest request,HttpServletResponse response) throws IOException{
//。。。。 这是您的判断逻辑
Boolean ret = true; // 这是最终返回值
//下面是response的设置
response.setContentType("text/xml;charset=utf-8"); 
response.setHeader("Cache-Control","no-cache"); 
try { 
//这是输出为JSON串的一种方式,结果应为JSON串,属性名一定是valid,值为true或false
JSONObject jsobjcet = new JSONObject(); 
jsobjcet.put("valid", ret);
response.getWriter().write(jsobjcet.toString()); 
//System.out.println(jsobjcet.toString()); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
}
}

您的Action最终输出的一定是下面形式的文本:

{"valid":false} //表示不合法,验证不通过
{"valid":true} //表示合法,验证通过

所以才使用JSONObject做为输出。

以上所述是小编给大家介绍的BootStrap-validator 使用记录(JAVA SpringMVC实现),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS网络游戏-(模拟城市webgame)提供的一些例子下载
Oct 14 Javascript
jQuery LigerUI 使用教程表格篇(1)
Jan 18 Javascript
javascript自动生成包含数字与字符的随机字符串
Feb 09 Javascript
Bootstrap3制作搜索框样式的方法
Jul 11 Javascript
Bootstrap的Refresh Icon也spin起来
Jul 13 Javascript
基于Javascript实现文件实时加载进度的方法
Oct 12 Javascript
浅述节点的创建及常见功能的实现
Dec 15 Javascript
React-router 4 按需加载的实现方式及原理详解
May 25 Javascript
js自定义弹框插件的封装
Aug 24 Javascript
基于Vue实现后台系统权限控制的示例代码
Aug 29 Javascript
javascript中的隐式调用
Feb 10 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 #Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
Sep 21 #Javascript
JS 获取HTML标签内的子节点的方法
Sep 21 #Javascript
浅谈JS使用[ ]来访问对象属性
Sep 21 #Javascript
js style.display=block显示布局错乱问题的解决方法
Sep 21 #Javascript
JS封装的选项卡TAB切换效果示例
Sep 20 #Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 #Javascript
You might like
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
vue 粒子特效的示例代码
2017/09/19 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
部署vue+Springboot前后端分离项目的步骤实现
2020/05/31 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
python BeautifulSoup使用方法详解
2013/11/21 Python
使用python统计文件行数示例分享
2014/02/21 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
python爬虫实例详解
2018/06/19 Python
python调用百度语音REST API
2018/08/30 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
python中return如何写
2020/06/18 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
优秀应届生推荐信
2013/11/09 职场文书
法律专业实习鉴定
2013/12/22 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
电影红河谷观后感
2015/06/11 职场文书
go开发alertmanger实现钉钉报警
2021/07/16 Golang
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android