JavaScript常用检测脚本(三)表单验证

/*
-------------------------------------------------------------------------------
说明: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) == falsereturn 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 == 0return 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) == falsereturn false;
    }
    
//不能超过长度
    if(obj.getAttribute("maxlength"!= null){
        
if(f_checkLength(obj) == falsereturn 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) == falsereturn false;
    }

    
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;
}
posted @ 2007-11-19 16:17  nestea  阅读(322)  评论(0编辑  收藏  举报