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="/UploadFiles/2021-04-02/jquery.min.js">二、初步应用。
这里直接引用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/
其中几个常用的,提一下,其实一看就懂,很好理解:
三、进阶应用
如果不想用默认的模板,可以使用以下个方式来进行一些自定义验证
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实现),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]