前段验证脚本的教程,其基础为jQuery的插件validate。

   一、可以验证哪些信息

  • 要求输入不能为
  • 要求输入格式必须为电子邮箱
  • 要求输入格式必须为URL
  • 要求输入格式必须为日期
  • 要求输入格式必须为数字
  • 要求输入格式必须为整数
  • 要求输入必须和指定输入框内容相同
  • 要求输入必须大于指定字符长度
  • 要求输入必须小于指定字符长度
  • 要求输入必须在指定字符长度范围内
  • 要求输入数字必须大于指定数值
  • 要求输入数字必须小于指定数值
  • 要求输入数字必须在指定数值范围内
  • 要求必须选择项
  • 要求必须选择不少于指定项
  • 要求必须选择不大于指定项
  • 要求必须选择在指定范围内的项数量

虽然默认已经自带了许多日常中所需要的验证,但是客户的需求是不断改变的。但是这个插件已经想到了以后的功能扩展,通过指定的方法可以将设计者自定义的验证功能嵌入进validate插件中,并且不会破坏原有的验证功能。但日常很多地方上面提供的验证功能已经可以解决了很多了。所以我们下面将会以上面这些提供的验证逐一介绍如何使用。

因为特殊的需求,所以我个人改变了错误信息呈现的方式,不是以label的方式呈现,而是更加友好更加动态的方式呈现错误提示信息。但由于需要技术保留,所以不能提供下载。但是所有的功能都可以实现的。

   二、快速学习

验证基本上都是验证表单中的输入内容,所以首先需要指定验证的表单:

 1 <body>
2 <form name="form1">
3 <table>
4 <tr>
5 <td><label for="us">UserName:<input type="text" name="us" id="us" /></label></td>
6 </tr>
7 <tr>
8 <td><label for="pwd">PassWord:<input type="password" name="pwd" name="pwd" /></label></td>
9 </tr>
10 </table>
11 </form>
12 <script type="text/javascript">
13 $(function(){
14 $("#form1").validate();
15 });
16 </script>
17 </body>

其中的“ $("#form1").validate(); ” 是最重要的,如果需要验证必须使用该代码,否则无法实现验证。如果指定的表单不同验证时只验证指定表单。

  三、漫漫学习

  1. 实现输入内容不能为空

    <input type="text" name="in" nValidate="{required:true}" />

    其中最重要的是   nValidate="{required:true}"  并且以后需要添加任何验证功能都要在 nValidate 中进行修改.

  2. 实现输入内容必须为电子邮箱
    <input type="text" name="ceemail" nValidate="{email:true}" />

    看到其中的 email:true  相信很多人都应该可以猜出后面如何使用不同的验证了。

  3. 实现输入内容必须为电子邮箱,且不能为空
    <input type="text" name="ceemail" nValidate="{required:true,email:true}" />

    这里我们使用了组合的方式将电子邮箱的验证功能和输入内容不能为空的验证功能同时启用,那么就可以实现必须输入内容并且输入的内容必须符合电子邮箱的格式。

  4. 实现输入内容必须为URL
    nValidate="{url:true}"

    为了更快速的学习,下面将会列出参数名称以及冒号后面所需要填写的参数和类型

  5. 实现输入内容必须为日期

    date:true

  6. 实现输入内容必须为数字

    number:true

  7. 实现输入内容必须为整数

    digits:true

  8. 实现输入内容必须和指定输入框内容相同

    equalTo:'#id'

    参数说明:
    id : 指定内容相同的输入框id

  9. 实现输入内容必须大于指定字符长度

    minlength:size
    参数说明:
    size : 指定字符串的长度

  10. 实现输入内容必须小于指定字符长度

    maxlength:size
    参数说明:
    size : 指定字符串的长度

  11. 实现输入内容必须在指定字符长度范围内

    rangelength:[minsize,maxsize]
    参数说明:
    minsize : 最短字符长度
    maxsize : 最长字符长度

  12. 实现输入数值必须大于指定数值

    min : num
    参数说明:
    num : 最小数值(输入的数值可以等于这个数值)

  13. 实现输入数值必须小于指定数值

    max : num
    参数说明:
    num : 最大数值(输入的数值可以等于这个数值)

  14. 实现输入数值必须在指定数值范围内

    range : [minnum,maxnum]
    参数说明:
    minnum : 最小数值
    maxnum : 最大数值

四、自定义提示消息
          上面的学习仅仅是学习了如何使用该验证,但是对于用户而言,他并不知道哪里错了,为什么错的。所以我们经常需要提示用户输入的内容具有什么错误。虽然我已经内置了中文的提示信息,但是那只是比较死板的,真实的情况中,我们必须根据该输入框要求输入的内容更加友好的提示用户的输入到低具有什么错误,如何纠正。所以下面我们即将学习如何自定义提示的消息内容。

通用属性 -- messages

如果是设置不同输入错误的提示信息,必须在"messages"下进行增加修改,如下:

1 <input type="text" name="test2" nValidate="{required:true,messages:{required:'用户名不能为空'}}"

对于上面的输入框,如果用户没有输入用户名则会提示用户“用户名不能为空”,而默认的是“字段不能为空”,一看就可以感觉到友好度更高了。
 并且可以设置不同错误类型所提示的消息,如下:

<input type="text" name="test1" nValidate="{required:true,number:true,minlength:5,maxlength:120,messages:{required:'请输入年龄',number:'请输入数字',minlength:'年龄不可以小于{0}岁',maxlength:'年龄不可以大于{0}岁'}}" />

以上的代码将可以实现要求用户输入正确年龄的操作,并且不能为空,且输入的年龄范围必须在5~120岁之间,否则将会显示对应的错误,比如用户不输入内容则提示“请输入年龄”,输入的内容为非数值类型则提示:“请输入数字”,输入的数值小于5则提示:“年龄不可以小于5岁”,输入的数值大于120岁则提示:“年龄不可以大于120岁”,其中的”{0}“,后台jQuery将会用我们设置”minlength“和”maxlength“中的数值替换掉。这样就可以自定义消息了。:“请输入数字”,

下面将陈列可以自定义消息的输入验证,因为很多都已经封装,所以前台就这么简单了。

required : “输入为空时提示的消息”

number :”输入类型非数值类型时提示的消息“

minlength :”输入内容的字符创长度小于参数设置的值时提示的消息“       存在参数 {0} 为 minlength 设置的值

maxlength : ”输入内容的字符长度大于参数设置的值时提示的消息“         存在参数 {0} 为 maxlength 设置的值

rangelength : ”输入内容的字符长度不在指定范围长时提示的消息“          存在参数 {0} 为最短长度 {1} 为最长长度

min : ”输入的数值小于参数设置的值时提示的消息“       存在参数{0} 为 min 设置的值

max :”输入的数值大于参数设置的值时提示的消息“     存在参数{0} 为 max 设置的值

range : ”输入的数值不在指定范围时提示的消息“       存在参数{0} 为最小数值的值 {1} 为最大数值的值

email : ”输入内容不符合邮箱地址时提示的消息“

url : "输入的内容不符合URL地址时提示的消息"

digits :”输入的类型不是整数时提示的消息“

date :”输入的类型不是日期时提示的消息“

前端和后端的输入合法性验证

前端输入合法性的验证:

前端页面:

<div class = "col-12">
<div class="kx-form-group">
<lable class="col-6 kx-control-lable"><i class="red-cue">*</i>sim卡号<lable>
<input type="text class="col-12 form-text" ng-model="xxx" name="simCardNo" ng-blur="checkSimCardNo()"/>
<span id="checkSimCard" style="display:none">请输入字母或数字</span>
</div>
</div>
前端js:
var reg = /^[0-9a-zA-Z]*$/;
var csc=document.getElementById("checkSimCard");
$scope.checkSimCardNo = function(){
if(!reg.test($scope.myPosDeviceVo.simCardNo)){
csc.style.display="block";
$scope.myPosDeviceVo.simCardNo=undefined;
}
}
后端输入合法性的验证:

后端合法性验证需要改动三个地方:1.Vo类或者Model类需要加注解;2.数据库要自定义提示信息;3.前端页面需要在form中加validator=""和data-invalid-msg=""等必要信息。

1.在Vo类或者Model类中加注解

在我们需要验证的地方加注解例如@Require,@Length

例子:public class Xxj,里面包含属性如下

@Require(groups = {Save.class,Update.class})//require表示必填,也有其他注解如@Length和@Max分别表示字符串长度和能够表示的最大值

private String DeviceNo;

然后定义接口,例如:

public static interface Save{}

public static interface Update{}

这里的两个接口与上面的Save.class还有Update.class对应,用来区分在什么时候会用到这个字段的自定义提示,是在保存的时候,还是在更新的时候,名称可以自己定义。

在写完注解和接口之后如果我们启动tomcat会发现生成了两对js文件,每一对分别命名为Xxj_Save和Xxj_Update(这就是那两个接口的作用了),分别放在不同的目录下,一个是校验规则js一个是校验提示js。根据这两个js来发送提示信息。

注意:在business目录下的source/main/resource/properties目录下有一个application.properties文件,可以在里面配置那两个js的生成路径;application.properties文件里面也需要配置你的Vo类或者model类的路径。

2.数据库自定义提示信息

对应的数据库需要插入一些提示数据

key locale_id message latest_time
Require.xxj.deviceNo 1 设备号不能为空 ***
Require.xxj.deviceNo 2 DeviceNo Not Null ***
key列中的Require就是注解的字段,message为提示信息
在数据库中设置key列中的值时,注意大小写,因为在生成js的时候会默认的第一个单词是小写的。

3.在前端页面中写代码

<form g-validator="Xxj_Save" data-invalid-msg="tooltipMessenger">

对应input里面应该有个属性name=“deviceNo”

然后运行,看效果。
---------------------

使用 jQuery 进行前端验证的更多相关文章

  1. 使用 jQuery 进行前端验证 -- 1

    如今很多的网站偶会有不同层次的验证去验证用户输入的信息是否符合我们所需要的数据类型.并且可以说任何有输入的地方都需要的去验证,验证一方面是要求用户输入正确格式的数据,同时也是避免恶意的用户进行非法的输 ...

  2. jQuery.validationEngine前端验证

    引入相关文件: <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js" type ...

  3. jQuery Validate前端验证

    我们经常看到如下效果,那么它是如何实现的呢?看下面: 废话少说,直接上代码,大家直接Copy就能看到上面的效果啦. <html> <head> <title>验证内 ...

  4. jQuery结合Ajax实现简单的前端验证和服务端查询

    上篇文章写了简单的前端验证由传统的JavaScript转向流畅的jQuery滑动验证,现在拓展一下,使用Ajax实现用户体验比较好的异步查询,同样还是从建立一个简单的表单开始 <form nam ...

  5. Javascript配合jQuery实现流畅的前端验证

    做前端时一般都习惯用JavaScript进行表单的简单验证比如非空验证和正则表达式验证,这样过滤后的数据提交到服务端再由专门的控制器做数据处理,这样能减轻服务器的负担,下面看一下前端验证的简单步骤: ...

  6. 关于引入多个jquery冲突的问题(附一个很好用的validate前端验证框架及使用方法)

    废话不多说,进入正题: 如果一个jsp中想要使用两个不同版本的jquery怎么办呢?客官往下看: <script src="${ctxStatic}/jquery/jquery-1.8 ...

  7. 简单的jQuery前端验证码校验

    简单的jQuery前端验证码校验2 html; <!DOCTYPE html> <html lang="zh-cn"> <head> <m ...

  8. jquery前端验证框架

    1.validationEngine.jquery.css  样式包 2.jquery.validationEngine-zh_CN.js 中文语言包 3.jquery.validationEngin ...

  9. 修改.net mvc中前端验证信息的显示方式

    最近一直在学习.net core的用法.想法是通过写一个新闻系统来熟悉一下这个最新的技术.其实,我以前一直对.net技术都是浅尝辄止,最主要原因是没有动力.平时写企业站因为时间原因,不是使用php的框 ...

随机推荐

  1. python3+socket搭建简易服务器

    踩了一上午的坑之后,终于对网络编程有了一点大致的.基本的了解.真的是0基础,之前对socket网络编程一点都不知道.(感觉自己与时代脱轨....) 首先我想对这些美妙的专业术语进行一番搜索: 服务器: ...

  2. 关于python爬虫的编码错误

    现在才发现很多错误只有自己一点点的去尝试才能发现.不管之前别人怎么和你说,总是不可能面面俱到,所以提升自己的方法就是亲手实践,自己一点点的去发现问题,并一个个的解决.慢慢享受其中无言的快感. 今天就发 ...

  3. zero-shot learning(ps:每天演好一个情绪稳定的成年人)

    my paper~~ 1.(DAP,IAP)Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer 2 ...

  4. KMP算法小记

    Knuth-Morris-Pratt算法: 转载来自http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_ ...

  5. PyQT5初学(一)

    PyQt5 是Digia的一套Qt5与python绑定的应用框架,同时支持2.x和3.x.本教程使用的是3.x.Qt库由Riverbank Computing开发,是最强大的GUI库之一 ,官方网站: ...

  6. The "get" method should be used when the form is idempotent---正交的两个概念 get 幂等

    https://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.1 17.13.1 Form submission method The me ...

  7. ssh各种姿势---ssh-keygen 生成ssh公钥和私钥

    利用ssh-keygen -t rsa可以生成ssh公钥和私钥,实现免输密码的ssh登陆     ssh-keygen -l -f /etc/ssh_host_rsa_key   ssh-keygen ...

  8. Cow Contest---poj3660

    题目链接:http://poj.org/problem?id=3660 题意:有n头牛,m个关系,a b意思是a能打败b:求能确定排名的有几个: 如果一头牛被x头牛打败,并且可以打败y头牛,如果x+y ...

  9. BZOJ1012最大数 [JSOI2008] 单调栈+二分

    正解:单调栈+二分查找(or,线段树? 解题报告: 拿的洛谷的链接quq 今天尝试学习了下单调栈,然后就看到有个博客安利了这个经典例题?于是就去做了,感觉还是帮助了理解趴quqqqqq 这题,首先,一 ...

  10. 【Echarts】图表用echarts【待完善】

    echarts是做数据统计. ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox ...