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 相关文章推荐
Div自动滚动到末尾的代码
Oct 26 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
jquery实现侧边弹出的垂直导航
Dec 09 Javascript
jQuery网页版打砖块小游戏源码分享
Aug 20 Javascript
js数组如何添加json数据及js数组与json的区别
Oct 27 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
Dec 16 Javascript
vue组件传递对象中实现单向绑定的示例
Feb 28 Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 Javascript
小程序如何定位所在城市及发起周边搜索
Feb 11 Javascript
JS数组的常用10种方法详解
May 08 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 Javascript
浅谈Vue的computed计算属性
Mar 21 Vue.js
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下pdo的mysql事务处理用法实例
2014/12/27 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
jquery插件开发方法(初学者)
2012/02/03 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
python 获取网页编码方式实现代码
2017/03/11 Python
python的多重继承的理解
2017/08/06 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
Python谱减法语音降噪实例
2019/12/18 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
Python识别验证码的实现示例
2020/09/30 Python
Django配置跨域并开发测试接口
2020/11/04 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
事业单位接收函
2014/01/10 职场文书
超市商业计划书
2014/05/04 职场文书
社区禁毒工作方案
2014/06/02 职场文书
关于教师节的广播稿
2014/09/10 职场文书
六年级语文教学反思
2016/03/03 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
如何用PHP实现多线程编程
2021/05/26 PHP
netty 实现tomcat的示例代码
2022/06/05 Servers