js验证表单第二部分

2016-02-19 11:48 7 1 收藏

下面图老师小编要跟大家分享js验证表单第二部分,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - Web开发 】

说明: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(ieles.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; il; 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;irows.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 (str0) 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---指的是文本栏名 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

来源:http://www.tulaoshi.com/n/20160219/1598679.html

延伸阅读
《风卷残云》demo第二部游戏各2种模式视频攻略欣赏 游戏封面 基础信息 游戏名称:风卷残云 英文名称:HurricaneX2 游戏类型:格斗类 游戏制作:秋千软件 游戏发行:百游 游戏语言:中文 登录平台:PC/XOBX360 游戏讨论: 新报:http://0day.ali213.net/html/2011/6276.html 游戏专题:     游戏简介 《风卷残云》试...
《风卷残云》Demo第二部游戏各两种模式视频攻略欣赏 游戏简介 《风卷残云》试玩版今日推出 不一样的中国功夫活着,是我战斗的理由!罗劲 中国首款大型功夫动作游戏《风卷残云》PC版即将于不久后正式宣布上市时间。今日百游官方正式放出全新简体中文试玩版下载,玩家将可先行体验不一样的中国功夫快打旋风。 全新简体中文试玩版特色简介: 经...
“窈窕淑女,君子好逑”。那些苗条如柳、体态婀娜的玲珑俏佳人,总是占尽春光。玲珑的曲线、曼妙的身材,是每一位女性的共同心愿。秋风渐起,又到了整形塑身的最佳季节,上海仁爱医院特别推出了“丰胸、瘦腰”魔鬼身材二部曲,只要你美丽的梦想并且能够付之行动,那么下一个春天来临时,你就再也不用心急如火喊着减肥,忙着卖束身内衣了…...
标签: Web开发
这里转载一篇前辈写的文章,在我自己的理解上修改了一下,仅作记录。 先贴一个国内某大公司的代码: 代码如下: script type="text/javascript" function lang(key) { mylang = { 'ls_input_myb': '请输入您的账户', 'ls_myb_email': '漫游币账户为邮箱地址', 'ls_login_password': '请输入您的登录密码', 'ls_password_length': '密...
标签: Web开发
这里所谓的复杂表单,是指表单中包含多种不同的输入类型,比如下拉列表框、单行文本、多行文本、数值等。在经常需要更换这类表单的场合,需要有一个表单的动态生成程序。本文介绍的正是这样一个系统,它以数据库保存表单定义数据,利用ASP脚本动态生成表单HTML代码以及验证表单输入的脚本。 一、定义数据库表结构 在Web上经常可...

经验教程

404

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部