对比:

1,以前的页面验证代码

<span style="font-size:18px;">//为了验证就医单号是否为空  
        var isDBNull = 'true'  
        //判断就医单号是否为空,为空:true,否则false;  
        function isInoputNull(){  
            for(var i = 0;i < detailSourceList.length; i++){  
                  
                var dateStr = $('#txtOriginalCode' + i)[0].value;  
                  
                if(dateStr.trim()==''){  
                    isDBNull='false';  
                }  
                      
             }  
    }</span>

这样我们每个需要验证的页面都要在提交时走一遍这个函数,我们如果验证多了,就会在提交表单是写N个类似的函数 ,这样,实际浪费的是我们的时间!

2,改进之后

<span style="font-size:18px;">

<input type="text" vtype="NumAndStr" notNull="true" vdisp="提示信息" id="isOldLeader"   value="${LoginUser.NLeader}"/>

</span>

在提交表单是,我们只需要调用一个统一的验证入口(doValidate)就可以了

验证js文件:validateform.js

 /**
表单验证类, 可以根据需要,参考下面的代码自行扩充
author: guoerhua@126.com
使用方法:在标签中可以添加以下属性
vtype: 输入域的类型,取值为[LetterStr, NumAndStr, NumStr, ...], 可参考validrule
notNull: 是否为空,取值为[true, false]
vdisp: 表示提示信息
*/
var validrule = new Object();
validrule.LetterStr = /^([a-zA-Z]+)?$/;
validrule.NumAndStr = /^([0-9a-zA-Z]+)?$/;
validrule.NumStr = /^(\d*)?$/;
validrule.string = /^([^'<>]+)?$/;
validrule.int = /^(\d{1,9})?$/;
validrule.minusint = /^(\-([1-9])(\d*))?$/;
validrule.float = /^((\.([0-9]\d*))|(([0-9]\d*)\.\d+$)|([0-9]\d*))?$/;
validrule.date = /^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1]))?$/;
validrule.time = /^((0[1-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))?$/;
validrule.datetime = /^((([1-9]\d{3})|([1-9]\d{1}))-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1]) (0[1-9]|1[0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))?$/;
validrule.year = /^(\d{4})?$/;
validrule.month = /^([1-9]|0[1-9]|1[0-2])?$/;
validrule.day = /^([1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])?$/;
validrule.postcode = /^(\d{6})?$/;
validrule.email = /^(.+\@.+\..+)?$/;
validrule.phone = /^(\(\d{3}\))?(\(?(\d{3}|\d{4}|\d{5})\)?(-?)(\d+))?((-?)(\d+))?$/;
validrule.mobiletel = /^(013(\d{9})|13(\d{9}))?$/;
validrule.ip = /^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5]))?$/;
validrule.idcard = /^(\d{15}|\d{18}|\d{17}X|\d{17}x)?$/;
validrule.tabledefine = /^(([A-Za-z])([A-Za-z0-9|_]){1,18})?$/;
validrule.integer = /^(\d{1,9})?$/;
validrule.number = /^(\d*)?$/;
validrule.url = /^(http:\/\/)/;
validrule.chinese = /^[\u4E00-\u9FA5]*$/;
validrule.notsstring = /^([^'<>\s]+)?$/;
validrule.noEmpty = /^\s*$/; function doValidate( vform )
{
var elems = vform.elements;
var frmLen = elems.length;
var thePat = "";
var strFormatInfo = "";
//对于每一个FROM元素
for(var i=0;i<frmLen;i++)
{
var _elem = elems[i];
if(!_elem)
continue; //为空检查
if(_elem.notNull != null && _elem.notNull == "true")
{
if(validrule.noEmpty.test(_elem.value))
{
alert("请填写"+_elem.vdisp+"!");
_elem.focus();
return false;
}
} if(_elem.tagName=="TEXTAREA"){
if(!validateTextareaMaxlength(_elem)){
return false;
}
} //类型检查
if(_elem.vtype == null)
{
continue;
}
if(_elem.vtype=="none")
{
thePat = "";
strFormatInfo = "";
}
if(_elem.vtype=="LetterStr")
{
thePat = validrule.LetterStr;
strFormatInfo = "纯字母字符串";
}
if(_elem.vtype=="NumAndStr")
{
thePat = validrule.NumAndStr;
strFormatInfo = "数字和字母字符串";
}
if(_elem.vtype=="NumStr")
{
thePat = validrule.NumStr;
strFormatInfo = "纯数字组成的字符串";
}
if(_elem.vtype=="string")
{
thePat = validrule.string;
strFormatInfo = "不能包含特殊符的字符串(英文的'<>)";
}
if(_elem.vtype=="int")
{
thePat = validrule.int;
strFormatInfo = "整数";
}
if(_elem.vtype=="minusint")
{
thePat = validrule.minusint;
strFormatInfo = "负整数,比如-123";
}
if(_elem.vtype=="float")
{
thePat = validrule.float;
strFormatInfo = "实数,比如356.32";
}
if(_elem.vtype=="date")
{
thePat = validrule.date;
strFormatInfo = "日期型,比如 2004-08-12";
}
if(_elem.vtype=="time")
{
thePat = validrule.time;
strFormatInfo = "时间型,比如08:37:29";
}
if(_elem.vtype=="datetime")
{
thePat = validrule.datetime;
strFormatInfo = "日期时间型,比如2004-08-12 08:37:29";
}
if(_elem.vtype=="year")
{
thePat = validrule.year;
strFormatInfo = "年代格式,比如 2005";
}
if(_elem.vtype=="month")
{
thePat = validrule.month;
strFormatInfo = "月份格式,比如 08";
}
if(_elem.vtype=="day")
{
thePat = validrule.day;
strFormatInfo = "日子格式,比如 14";
}
if(_elem.vtype=="postcode")
{
thePat = validrule.postcode;
strFormatInfo = "邮编,比如 100001";
}
if(_elem.vtype=="email")
{
thePat = validrule.email;
strFormatInfo = "电子邮件格式,比如 msm@hotmail.com";
}
if(_elem.vtype=="phone")
{
thePat = validrule.phone;
strFormatInfo = "电话号码格式,比如010-67891234";
}
if(_elem.vtype=="mobiletel")
{
thePat = validrule.mobiletel;
strFormatInfo = "手机号码格式,比如13867891234";
}
if(_elem.vtype=="ip")
{
thePat = validrule.ip;
strFormatInfo = "机器ip地址格式,比如 172.22.169.11";
}
if(_elem.vtype=="url")
{
thePat = validrule.url;
strFormatInfo = "url地址格式,比如 http://www.baidu.cn";
}
if(_elem.vtype=="idcard")
{
thePat = validrule.idcard;
strFormatInfo = "身份证号码,比如15位或者18位数字";
}
if(_elem.vtype=="tabledefine")
{
thePat = validrule.tabledefine;
strFormatInfo = "p_tablename";
}
if(_elem.vtype=="integer")
{
thePat = validrule.integer;
strFormatInfo = "整数";
}
if(_elem.vtype=="number")
{
thePat = validrule.number;
strFormatInfo = "数字字符";
}
if(_elem.vtype=="chinese")
{
thePat = validrule.chinese;
strFormatInfo = "汉字";
}
if(_elem.vtype == "notsstring")
{
thePat = validrule.notsstring;
strFormatInfo = "不包含空格和特殊字符的字符串(英文的'<>)";
} var gotIt = null;
if(thePat!="")
{
gotIt = thePat.exec(_elem.value);
}
if(gotIt == null)
{
alert(_elem.vdisp+"输入不合法,格式应为:"+strFormatInfo);
_elem.focus();
return false;
}
}
return true;
} function validateTextareaMaxlength(_elem){
var strLen = stringLength(_elem.value);
if(_elem.maxlength != null && strLen > _elem.maxlength)
{
var vdisp = _elem.vdisp || "";
alert(vdisp + "超过限定长度,请检查! \r\n\r\n" + vdisp + "限定长度为" + _elem.maxlength + ", 实际长度为" + strLen + ". \r\n(中文字符长度为2)");
_elem.focus();
return false;
}
return true;
} function stringLength(str){
if(str==null) return 0;
var n = 0;
for(var i=0; i<str.length; i++){
if(str.charCodeAt(i)>255)
n = n + 2;
else n++;
}
return n;
}

java工程积累——前台页面的统一校验的更多相关文章

  1. java实现打印前台页面

    核心:用window自带方法 window.print(); 打印的范围:body里内容,只要在页面能显示出来,都打印 遇到的问题:打印按钮被一起打印出来了,url也别打印出来了 解决办法:在触发打印 ...

  2. 关于MD5校验和java工程下的校验

    File file = new File("cos_code2003.bin"); System.out.println(file.length()); byte[] data = ...

  3. java中后端拼接字符串返回前台页面换行显示

    后端拼接时用:"\n"分割,比如: String str = "白日依山尽,\n" + "黄河入海流:"; 返回前台页面时,放入 <p ...

  4. springmvc 项目完整示例08 前台页面以及知识点总结

    至此已经基本测试成功了,我们稍作完善,让它成为一个更加完整的项目 我们现在重新规划下逻辑 两个页面 一个登录页面 一个欢迎页面 登陆页面输入账号密码,登陆成功的话,跳转登陆成功 欢迎页面 并且,更新用 ...

  5. 访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决

    访问前台页面${pageContext.request.contextPath}/el表达式失效问题解决 2017年05月09日 10:54:18 AinUser 阅读数:922 标签: el表达式4 ...

  6. SpringBoot集成websocket发送后台日志到前台页面

    业务需求 后台为一个采集系统,需要将采集过程中产生的日志实时发送到前台页面展示,以便了解采集过程. 技能点 SpringBoot 2.x websocket logback thymeleaf Rab ...

  7. 谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式

    作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 ...

  8. 使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建

    使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建 目录 使用jenkins自动部署java工程到jboss-eap6.3 -- 1.环境搭建 使用jenkins自动 ...

  9. 使用spring webflow,在前台页面中如何显示后端返回的错误信息

    刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到 ...

随机推荐

  1. java学习笔记之线程1

    1.线程的概念 线程是系统中最小的执行单元,同一进程有多个线程,多个线程共享进程的资源. 线程调用yield()方法使线程从运行状态转入可运行状态,让出资源: 线程调用sleep()方法使线程由运行状 ...

  2. 用hibernate tools生成对应的sql应用代码

    参考资料: eclipse在线配置hibernate tools http://jingyan.baidu.com/article/db55b609959d154ba20a2f5d.html [图]H ...

  3. 为你的网站或App提供免费Https支持

    网站或App Http传输是明文传输,在传输登录或支付相关的数据时,完全是裸奔. 购买证书虽然不是很贵, 但对于个人或初创团队来说,完全可以申请免费的证书来提供Https访问. 本文介绍通过start ...

  4. iis6 服务器做301跳转返回状态码200解决方法。

    倘若你的配置和上图一样的话,在查询返回值是200的情况,你试着把你服务器上的安全狗或者防火墙,还有360网站卫士之类的安全软件停止试试,看是否能正常.

  5. oracle---包--laobai

    包(package) 作用:逻辑对象的一种.对相关存储过程.函数.变量的封装. a 封装,便于调用 b 统一授权 系统内置包:dbms_output.用于输出. standard:常用的函数.异常的定 ...

  6. Android View 的事件体系

    android 系统虽然提供了很多基本的控件,如Button.TextView等,但是很多时候系统提供的view不能满足我们的需求,此时就需要我们根据自己的需求进行自定义控件.这些控件都是继承自Vie ...

  7. thinkphp添加数据

    <?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { ...

  8. MyBatis Cache配置

    @(MyBatis)[Cache] MyBatis Cache配置 MyBatis提供了一级缓存和二级缓存 配置 全局配置 配置 说明 默认值 可选值 cacheEnabled 全局缓存的开关 tru ...

  9. 深入分析HTTP状态码502(nginx+php-fpm)

    我们的一个web项目,由于新上城市增多,导致访问量增大,DB压力增大,作为提供接口的业务方,最近被下游反馈大量请求"502". 502,bad gateway,一般都是upstre ...

  10. DateUtils 学习记录1

    开发过程中很多时候都需要处理各种各样的日期..有些项目可能还会有自己的DateUtil.... 其实apache commons lang3有一个很好用的日期处理工具类,叫DateUtils... 基 ...