使用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] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[ ...
随机推荐
- Caused by: java.lang.NumberFormatException: For input string: ""
1.错误描写叙述 java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatEx ...
- java Socket通信使用BufferedReader和BufferedWriter的注意事项
注意事项:readLine()要求有换行标识,write()要输出换行标识,要调用flush()刷新缓冲区. 以下是取自java socket通信中的一小段代码. BufferedReader rea ...
- 算法笔记_009:字符串匹配(Java)
1 问题描述 给定一个n个字符组成的串(称为文本),一个m(m <= n)的串(称为模式),从文本中寻找匹配模式的子串. 2 解决方案 2.1 蛮力法 package com.liuzhen.c ...
- model模块
所谓的模块就是一个独立的文件,文件与文件之间是相互封闭的. //-----------------modeltest.js----------------- export var webName = ...
- 如何阅读Android系统源码-收藏必备
对于任何一个对Android开发感兴趣的人而言,对于android系统的学习必不可少.而学习系统最佳的方法就如linus所言:"RTFSC"(Read The Fucking So ...
- MYSQL 什么时候用单列索引?什么使用用联合索引?(收集)
我一个表 students 表,有3个字段 ,id,name,age 我要查询 通过 name 和age,在这两个字段 是创建 联合索引?还是分别在name和age上创建 单列索引呢? 多个字段查询什 ...
- 【Redis】redis+php处理高并发,很好的教程||附上 php的文件锁
链接至:http://blog.csdn.net/nuli888/article/details/51865401 很好的教程,其中redis+php有点小问题. 附上php文件锁: $fp = fo ...
- 【apache】apache模拟高并发请求
目的:测试程序的性能 运用的工具是apache的ab工具,装有apache服务器的一般都有ab工具. lamp命令: ab -c 10 -n 100 "http://a.ilanni.com ...
- 【LeetCode】90. Subsets II (2 solutions)
Subsets II Given a collection of integers that might contain duplicates, S, return all possible subs ...
- 摘:SQL Server数据类型的25种
我们大家都知道数据类弄是数据的一种基本属性,其主要是表示数据在实际操作中所表示信息的类型.任何一种计算机语言都定义了自己的数据类型. 当然,不同的程序语言都具有不同的特点,所定义的SQL Server ...