使用JAVASCRIPT进行数据完整性验证
页面输入完整性是编写BS经常遇到的问题,如果那里需要就到那里写,那可是要花不少的时候,并且造成不必要的浪费,下面是一个通过校验脚本,使用非常方便,通过传入FORM名就可以进行校验,通过在页面控件中增加用户本身自定义属性,进行方便的验证,包括数字的输入、密码的输入、EMAIL的输入,用户本身可以进行无限的扩展,使用如下,在页面中加入如下代码:
- <form name="form1">
- <input type="text" name="t1" req="0" size="20"><br>
- <input type="text" name="t2" req="0" size="20"><br>
- <input type="text" name="t3" req="0" size="20"><br>
- <input type="text" name="t4" req="1" size="20"><br>
- <input type="text" name="t5" req="1" customtype="email" displayname="电子邮件" size="20"><br>
- <input type="button" name="bt" value="check" onclick="checkForm(document.form1)">
- </form>
并在页头加以包含以下代码的JS脚本:
- var customtypes = new Array("num","plus","int","email","link","password","name","date","money","date8");
- var custommessage = new Array(
- "不是一个有效的数字。",
- "不是一个有效的正整数。",
- "不是一个有效的整数。",
- "不是一个有效的电子邮件地址。",
- "不是一个有效的链接,请确认输入了完整的地址,例如http://www.cnlist.com。",
- "不是一个有效的密码,密码只能使用字母、下划线与数字,不能包含符号与空格。",
- "不是一个有效的名称,名称只能使用字母、下划线与数字,不能包含符号与空格。",
- "不是一个有效的日期。",
- "不是一个有效的money格式。",
- "不是一个有效的8位日期,如:20050801。"
- );
- function checkForm(oForm){
- window.event.returnValue = false;
- for (var i=0;i<oForm.all.tags("input").length;i++){
- var ele = oForm.all.tags("input")[i];
- var ct = ele.getAttribute("customtype");
- var req = ele.getAttribute("req");
- var dn = ele.getAttribute("displayname");
- if (null == dn){
- dn = ele.name;
- }
- dn = "“" + dn + "”";
- if(ele.value!=null){
- ele.value = ele.value.replace(/%/g, "%");
- }
- var nr = new String(ele.value);
- if ("1" == req){
- if (nr.length < 1){
- alert(dn + "不可以省略,请重新输入。");
- //ele.focus();
- focusIt(ele);
- return false;
- }
- }
- if((''==req || '0' ==req || null==req) && (ele.value == "")) continue;//不必要且没有输入时,下一个
- if ((("" == req)||(null == ct)) &&(ele.value == "")) continue;
- //检查自定义类型
- //纠正自定义类型在req不等于1时仍要求输入的bug
- if (("1" == req) || (nr.length > 0)) {
- for (var j=0;j<customtypes.length;j++){
- if (ct == customtypes[j]){
- if(ct=="money"){
- eval("var rtn = check_" + customtypes[j] + "(ele);");
- }else{
- eval("var rtn = check_" + customtypes[j] + "(ele.value);");
- }
- if (!rtn){
- alert(dn + custommessage[j]);
- //ele.focus();
- focusIt(ele);
- return false;
- }
- }
- }
- }
- }
- window.event.returnValue = true;
- return true;
- }
- function check_money(s) {
- s.value=s.value.replace(/,/g, "")
- var re = /^(/+|-)?/d+(./d+)?$/i;
- return re.test(s.value);
- }
- function check_email(s){
- var re = /^/w+@(/w)+((.(/w)+)+)?$/i;
- return re.test(s);
- }
- function check_num(s){
- var re = /^(/+|-)?/d+(./d+)?$/i;
- return re.test(s);
- }
- function check_int(s){
- var re = /^(/+|-)?/d+$/i;
- return re.test(s);
- }
- function check_plus(s) {
- var re = /^[1-9]/d*$/i
- return re.test(s);
- }
- function check_link(s){
- var re = /^(http|mailto|ftp|https|telnet)://{2}/i;
- return re.test(s);
- }
- function check_password(s){
- var re = /^/w+$/i;
- return re.test(s);
- }
- function check_name(s){
- return check_password(s);
- }
- function check_date8(DateString){
- return isDateEight(DateString);
- }
- //日期检测
- function check_date(DateString){
- if (DateString==null) return false;
- if (Dilimeter=='' || Dilimeter==null)
- var Dilimeter = '-';
- if (Dilimeter.indexOf("/")>0)
- {
- Dilimeter="/";
- }
- var tempy='';
- var tempm='';
- var tempd='';
- var tempH="";
- var tempM="";
- var tempS="";
- var tempymd="";
- var temphms="";
- var tempArray;
- if (DateString.length<8 && DateString.length>19) {
- return false;
- }
- if (DateString.indexOf(" ")>0)
- {
- temp=DateString.split(" ");
- tempymd=temp[0];
- temphms=temp[1];
- }
- else
- {
- tempymd=DateString;
- temphms="00:00:00";
- }
- tempArray = tempymd.split(Dilimeter);
- if (tempArray.length!=3) {
- return false;
- }
- if (tempArray[0].length==4)
- {
- tempy = tempArray[0];
- tempd = tempArray[2];
- tempm = tempArray[1];
- }
- else
- {
- tempy = tempArray[2];
- tempd = tempArray[1];
- tempm = tempArray[0];
- }
- tempArray = temphms.split(":");
- if (tempArray.length>3 || tempArray.length<2) {
- return false;
- }
- switch (tempArray.length) {
- case 2:
- tempH=tempArray[0];
- tempM=tempArray[1];
- tempS="00";
- break;
- case 3:
- tempH=tempArray[0];
- tempM=tempArray[1];
- tempS=tempArray[2];
- break;
- }
- var tDateString = tempy + '/'+tempm + '/'+tempd+' '+tempH+":"+tempM+":"+tempS;
- var tempDate = new Date(tDateString);
- if (isNaN(tempDate)) {
- return false;
- }
- if ((tempDate.getYear().toString()==tempy || tempDate.getYear()==parseInt(tempy,10)-1900)
- && (tempDate.getMonth()==parseInt(tempm,10)-1)
- && (tempDate.getDate()==parseInt(tempd,10))
- && (tempDate.getHours().toString()==parseInt(tempH,10))
- && (tempDate.getMinutes().toString()==parseInt(tempM,10))
- && (tempDate.getSeconds().toString()==parseInt(tempS,10)))
- {
- return true;
- }
- else
- {
- alert('tDateString='+tDateString);
- return false;
- }
- }
- //激活输入组件的焦点
- function focusIt(obj){
- try{
- var ele = mtb;
- }catch(e){
- try{
- obj.focus();
- return;
- }catch(e){
- return;
- }
- }
- for (var i=0;i<ele.length;i++){
- swH(i);
- try{
- obj.focus();
- }catch(e){
- continue;
- }
- break;
- }
- try{
- obj.focus();
- }catch(e){
- return false;
- }return true;
- }
使用JAVASCRIPT进行数据完整性验证的更多相关文章
- Javascript之登陆验证
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| ]*\r 匹配网址URL的正则表达式:http ...
- JavaScript表单验证年龄
JavaScript表单验证年龄,判断一个输入量是否符合年龄,通过正则表达式实现. //检查年龄 function isAge(str){ var mydate=new Date; var now=m ...
- 前端工具 - 15个最佳的 JavaScript 表单验证库
客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...
- JavaScript表单验证和正则表达式
JavaScript表单验证 分为四类: 1.非空验证 常用于用户名等 2.相等验证 常用于验证两次输入的密码 3.范围验证 常用于年龄等 4.正则验证 用于手机号,邮箱号等 以下是实例: <! ...
- 15个最佳的 JavaScript 表单验证库
客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...
- JavaScript 表单验证入门
JavaScript 表单验证 JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证. 被 JavaScript 验证的这些典型的表单数据有: 用户是否已填写表单 ...
- JavaScript 表单验证 案例
JavaScript 表单验证 案例 版权声明:未经授权,严禁转载! 编写 HTML 文件,搭建主体界面 <html> <head> <meta charset=&q ...
- 10个强大的Javascript表单验证插件推荐
创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍了10个不错的JavaScri ...
- JavaScript 表单验证正则表达式大全
JavaScript 表单验证正则表达式大全[转载] 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[ ...
随机推荐
- Android中的一些小技巧
这个是App判断是pad还是手机的代码: public boolean isTabletDevice() { TelephonyManager telephony = (TelephonyManage ...
- eclipse插件之easyshell
在eclipse marketplace可以找到这个插件,名字就是easyshell,下载安装完以后,可以通过配置快捷键实现: enjoy it.
- android开机启动代码
1)public class StartupReceiver extends BroadcastReceiver { @Override public void onReceive(Context c ...
- (二)hibernate进阶
1.hibernate.cfg.xml常用配置以上节代码为例 <session-factory> <property name="connection.username&q ...
- jquery 入门与知识
一)什么是jQuery? [以封装的思想,重构<<图片显示和隐藏>>] 第三方组织预先写好的一些实用JS文件.类,方法,都统称为JS实用库,免费放在网上,同时配有相关的学习文档 ...
- Ubuntu下添加新分区并设置挂载点
Ubuntu下添加新分区并设置挂载点 最近在做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小 ...
- 使用 Python 的 matplotlib 绘图库进行绘图
matplotlib 是 Python 最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 1 使用 Ma ...
- NuGet学习笔记(2) 使用图形化界面打包自己的类库[转]
http://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477607.html 上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet ...
- C++中四种类型转换以及const_cast是否能改变常量的问题
we have four specific casting operators:dynamic_cast, reinterpret_cast, static_cast and const_cast. ...
- Mysql 比较运算符详解
熟悉了最简单的算术运算符,再来看一下比较运算符.当使用SELECT 语句进行查询时,MySQL允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回1,为假则返回0,比较结果不确定则返 ...