js验证表单第二部分


Posted in Javascript onNovember 25, 2006

说明:JavaScript脚本,验证表单中的数据项  begin 
------------------------------------------------------------------------------- 
*/ 
function checkForm(objFrm){ 
var len = 0; 
len = objFrm.elements.length; 
var i = 0; 
var objCheck; 
//文本框 
for(i = 0; i < len; i ++){ 
objCheck = objFrm.elements[i]; 
if(objCheck.type =="text" && !f_checkTextValid(objCheck) ){ 
return false; 



//下拉框 
for(i = 0; i < len; i ++){ 
objCheck = objFrm.elements[i]; 
if(objCheck.type =="select-one" && !f_checkSelectValid(objCheck) ){ 
return false; 



//时间段有效 
if( f_checkStartAndEndDate(objFrm) == false) return false; 
return true; 

function f_checkSelectValid(obj){ 
//alert("check select"); 
if(obj.options.length <= 0){ 
alert("下拉选框无数据!"); 
return false; 

return true; 

function f_checkStartAndEndDate(frm){ 
var len = frm.elements.length; 
if(len == null && len == 0) return true; 
var i=0; 
var temp; 
var objCheck; 
var objStartDate; 
var objEndDate; 
//alert("start date period check"); 
try{ 
for(i=0; i< len ; i++){ 
objCheck = frm.elements[i]; 
temp = objCheck.name; 
if( temp.indexOf("startDate") >0 ||temp.indexOf("beginDate")>0 ) 
objStartDate = objCheck; 
if( temp.indexOf("endDate") > 0 ) 
objEndDate = objCheck; 

//alert(objStartDate.value); 
//alert(objEndDate.value); 
if(objStartDate.value==null || objStartDate.value =="" || objStartDate.value ==null || objStartDate.value ==""){ 
return true; 

return checkTwoDate(objStartDate.value, objEndDate.value); 
//alert("end date period check"); 
}catch(E){} 
return true; 

function f_checkTextValid(obj){ 
//不能为空 
if(obj.getAttribute("isNeed") != null){ 
if(f_isNotNull(obj) == false) return false; 

//不能超过长度 
if(obj.getAttribute("maxlength") != null){ 
if(f_checkLength(obj) == false) return false; 

var checkType =""; 
checkType = obj.getAttribute("checkType"); 
if(checkType==null||checkType=="") return true; 
// 
if (checkType.indexOf("number") >=0){ 
if(f_isNumber(obj) == false)  return false; 
if(f_checkNumType(obj,checkType) == false)  return false; 

// 
if (checkType.indexOf("positive") >=0){ 
if(f_isNumber(obj) == false)  return false; 
if(f_isPositive(obj)==false)  return false; 
if(f_checkNumType(obj,checkType) == false)  return false; 

if (checkType.indexOf("date") >=0){ 
if(f_checkDate(obj) == false) return false; 

/* 
switch(checkType){ 
case "number": if(f_isNumber(obj) == false) return false;break; 
case "date": if(f_checkDate(obj) == false) return false;break; 
default: 

*/ 
return true; 

function f_isNotNull(obj){ 
if(obj.value == ""){ 
f_alert(obj, " 不允许为空值!"); 
return false; 

return true; 

function f_isNumber(obj){ 
if(isNaN(obj.value)){ 
f_alert(obj," 应为数值类型"); 
return false; 


return true; 

function f_checkDate(obj) { 
if(checkDate(obj.value) ==false){ 
f_alert(obj," 不是合法日期格式!"); 
return false; 


return true; 

function f_checkLength(obj){ 
if(getTotalBytes(obj) > Math.abs( obj.getAttribute("maxlength") ) ){ 
f_alert(obj," 超出长度限制!"); 
return false; 


return true; 

function  f_alert(obj,alertStr){ 
var fielName = obj.getAttribute("fieldName"); 
if(fielName == null) 
fielName = ""; 
alert(fielName + "\n" +alertStr); 
obj.select(); 
obj.focus(); 

function f_checkNumType(obj, numType){ 
//假设: 已经进行数字类型判断 
var strTemp; 
var numpric; 
var numLen; 
var strArr; 
var defaultLen = 19; 
var defaultpric = 5; 
try{ 
if(numType == null|| numType =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric); 
if(numType.indexOf("(") < 0 || numType.indexOf(")") < 0 ) return f_checkNumLenPrec(obj,defaultLen, defaultpric); 
strTemp = numType.substr( numType.indexOf("(") + 1 ,numType.indexOf(")") - numType.indexOf("(") -1 ); 
if(strTemp == null||strTemp =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric); 
strArr = strTemp.split(","); 
numLen = Math.abs( strArr[0] ); 
numpric = Math.abs( strArr[1] ); 
return f_checkNumLenPrec(obj,numLen, numpric); 
}catch(e){ 
alert("in f_checkNumType = " + e); 
return f_checkNumLenPrec(obj,defaultLen, defaultpric); 


function f_checkNumLenPrec(obj, len, pric){ 
var numReg; 
var value = obj.value; 
var strValueTemp, strInt, strDec; 
//alert(value + "=====" + len + "====="+ pric); 
try{ 

numReg =/[\-]/; 
strValueTemp = value.replace(numReg, ""); 
strValueTemp = strValueTemp.replace(numReg, ""); 
//整数 
if(pric==0){ 
numReg =/[\.]/; 
//alert(numReg.test(value)); 
if(numReg.test(value) == true){ 
f_alert(obj, "输入必须为整数类型!"); 
return false; 


if(strValueTemp.indexOf(".") < 0 ){ 
//alert("lennth==" + strValueTemp); 

if(strValueTemp.length >( len - pric)){ 
f_alert(obj, "整数位不能超过"+ (len - pric) +"位"); 
return false; 

}else{ 
strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") ); 

//alert("lennth==" + strInt); 

if(strInt.length >( len - pric)){ 
f_alert(obj, "整数位不能超过"+ (len - pric) +"位"); 
return false; 

strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length ); 

//alert("pric==" + strDec); 

if(strDec.length > pric){ 
f_alert(obj, "小数位不能超过"+  pric +"位"); 
return false; 


return true; 
}catch(e){ 
alert("in f_checkNumLenPrec = " + e); 
return false; 


function f_isPositive(obj){ 
var numReg =/[\-]/; 
if(numReg.test(obj.value) == true){ 
f_alert(obj, "必须为正数!"); 
return false; 

return true; 

/* 
function selectedCheckboxCount(form) 
功能说明:对Form中选中的可选项计数 
参数说明: 
form:指定的表单 
*/ 
function selectedCheckboxCount(form){ 
var length =0; 
var i=0; 
var count =0; 
eles = form.elements; 
while(i<eles.length){ 
obj= eles.item(i); 
//type = obj.attributes.item("type").nodeValue; 
type = obj.type; 
if(type == "checkbox"){ 
if(obj.checked){ 
count++; 


i++; 

return count; 

//得到字节长度 
function getByteLen(str) 

var l = str.length; 
var n = l; 
for ( var i=0; i<l; i++ ) 
if ( str.charCodeAt(i) <0 || str.charCodeAt(i) >255 ) 
n=n+1; 
return n 

/* 
说明: 
1.清除表格中的数据(0.0 和 0) 
2.如果cell中没有数据,则自动加上一个空格 
3.清除空白行的checkbox 
参数: 
clearzero:是否清除"0"、"0.0",false不清除、true清除(默认为true) 
tablename:要清除的表格名字,默认为sortTable 
*/ 
function clear_table(clearzero,tablename) 

var tobject; 
if(tablename==null) 
tobject=gmobj("sortTable"); 
else 
tobject=gmobj(tablename); 
//如果table未定义,则不进行过滤 
if(tobject==null) 
return; 

//如果函数调用参数为空,表示要清除0、0.0;反之,不要清除0、0.0。 
var clear = (clearzero==null)?true:clearzero; 
//清除0、0.0,填补空格 
var rows = tobject.rows; 
var j=0; 
for(var i=0;i<rows.length;i++) 

//取得第一个cell的属性clear,如果为1,表示该行没有数据,则清除该行所有数据 
while(tobject.rows[i].cells[j] != null) 

if(clear) 

if(tobject.rows[i].cells[j].innerHTML==0 ||tobject.rows[i].cells[j].innerHTML==0.0||tobject.rows[i].cells[j].innerHTML=="") 
tobject.rows[i].cells[j].innerText=" "; 

else 

if (tobject.rows[i].cells[j].innerHTML=="") 
tobject.rows[i].cells[j].innerText=" "; 

j++; 

j=0; 

return true; 

function gmobj(mtxt)  /* Get object by object name */ 

if (document.getElementById) { 
m=document.getElementById(mtxt); 
} else if (document.all) { 
m=document.all[mtxt]; 
} else if (document.layers) { 
m=document.layers[mtxt]; 

return m; 

/* 
------------------------------------------------------------------------------- 
说明:JavaScript脚本,验证表单中的数据项  end 
------------------------------------------------------------------------------- 
*/ 
/* 
用途:检查输入字符串是否是带小数的数字格式,可以是负数(并且满足规定的精度) 
输入:str:字符串 
l:总位数 
d:小数点后位数 
返回: 
如果通过验证返回true,否则返回false 
*/ 
function isDecimal( str,l,d ){   
if(isInteger(str)) { 
if (l==null)  return true; 
if (str<0) l--; 
if (str.length<=l) return true; 

var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/; 
if (re.test(str)) { 
if (l==null)  return true; 
if (d==null) d=0; 
if(RegExp.$1==0&&RegExp.$2==0) return false; 
if (RegExp.$1.length+RegExp.$2.length<=l 
&& RegExp.$2.length<=d)  return true; 

return false; 

onclick="isNull('Co.PageForm.CompetitorName');" 
Co--指本页面   PageForm--指formName  CompetitorName---指的是文本栏名 

Javascript 相关文章推荐
ArrayList类(增强版)
Apr 04 Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
Apr 15 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
Jul 09 Javascript
JavaScript等比例缩放图片控制超出范围的图片
Aug 06 Javascript
简单实现js间歇或无缝滚动效果
Jun 29 Javascript
深入解析Vue 组件命名那些事
Jul 18 Javascript
vue实现手机号码抽奖上下滚动动画示例
Oct 18 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
微信小程序模拟cookie的实现
Jun 20 Javascript
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
this.$toast() 了解一下?
Apr 18 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 Javascript
js验证表单大全
Nov 25 #Javascript
禁止刷新,回退的JS
Nov 25 #Javascript
用函数式编程技术编写优美的 JavaScript
Nov 25 #Javascript
通过JAVASCRIPT读取ASP设定的COOKIE
Nov 24 #Javascript
键盘控制事件应用教程大全
Nov 24 #Javascript
Javascript操纵Cookie实现购物车程序
Nov 23 #Javascript
删除重复数据的算法
Nov 23 #Javascript
You might like
php获取目标函数执行时间示例
2014/03/04 PHP
php生成随机数的三种方法
2014/09/10 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
js 如何实现对数据库的增删改查
2012/11/23 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
python操作日期和时间的方法
2014/03/11 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
python opencv实现运动检测
2018/07/10 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Django中多种重定向方法使用详解
2019/07/17 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
python集合删除多种方法详解
2020/02/10 Python
机械设备与数控技术专业求职信
2014/08/10 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
李强优秀员工观后感
2015/06/16 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
Linux磁盘管理方法介绍
2022/06/01 Servers