javascript 校验数据
作者:软件架构 技术团队 文章来源:hi.baidu.com 发布日期:2009-02-28 浏览次数:
/**
* 取得字符串的字节长度
*/
代码
function strlen(str) { var i; var len; len = 0; for (i=0;i<str.length;i++) { if (str.charCodeAt(i)>255) len+=2; else len++; } return len; }
/*
* 判断是否为数字,是则返回true,否则返回false
*/
代码
function f_check_number(obj) { if (/^\d+$/.test(obj.value)) { return true; } else { f_alert(obj,"请输入数字"); return false; } }
/*
* 判断是否为自然数,是则返回true,否则返回false
*/
代码
function f_check_naturalnumber(obj) { var s = obj.value; if (/^[0-9]+$/.test( s ) && (s > 0)) { return true; } else { f_alert(obj,"请输入自然数"); return false; } }
/*
* 判断是否为整数,是则返回true,否则返回false
*/
代码
function f_check_integer(obj) { if (/^(\+|-)?\d+$/.test( obj.value )) { return true; } else { f_alert(obj,"请输入整数"); return false; } }
/*
* 判断是否为实数,是则返回true,否则返回false
*/
代码
function f_check_float(obj) { if (/^(\+|-)?\d+($|\.\d+$)/.test( obj.value )) { return true; } else { f_alert(obj,"请输入实数"); return false; } }
/*
* 校验数字的长度和精度
*/
代码
function f_check_double(obj){ var numReg; var value = obj.value; var strValueTemp, strInt, strDec; var dtype = obj.eos_datatype; var pos_dtype = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")).split(","); var len = pos_dtype[0], prec = pos_dtype[1]; try { numReg =/[\-]/; strValueTemp = value.replace(numReg, ""); numReg =/[\+]/; strValueTemp = strValueTemp.replace(numReg, ""); //整数 if(prec==0){ numReg =/[\.]/; if(numReg.test(value) == true){ f_alert(obj, "输入必须为整数类型"); return false; } } if(strValueTemp.indexOf(".") < 0 ){ if(strValueTemp.length >( len - prec)){ f_alert(obj, "整数位不能超过"+ (len - prec) +"位"); return false; } }else{ strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") ); if(strInt.length >( len - prec)){ f_alert(obj, "整数位不能超过"+ (len - prec) +"位"); return false; } strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length ); if(strDec.length > prec){ f_alert(obj, "小数位不能超过"+ prec +"位"); return false; } } return true; }catch(e){ alert("in f_check_double = " + e); return false; } }
/*
* 校验数字的最小最大值
* 返回bool
*/
代码
function f_check_interval(obj) { var value = parseFloat(obj.value); var dtype = obj.eos_datatype; var pos_dtype = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")).split(","); var minLimit = pos_dtype[0]; var maxLimit = pos_dtype[1]; var minVal = parseFloat(pos_dtype[0]); var maxVal = parseFloat(pos_dtype[1]); if(isNaN(value)) { f_alert(obj, "值必须为数字"); return false; } if((isNaN(minVal) && (minLimit != "-")) || (isNaN(maxVal) && (maxLimit != "+"))) { f_alert(obj, "边界值必须为数字或-、+"); return false; } if(minLimit == "-" && !isNaN(maxVal)) { if(value > maxVal) { f_alert(obj, "值不能超过" + maxVal); return false; } } if(!isNaN(minVal) && maxLimit == "+") { if(value < minVal) { f_alert(obj, "值不能小于" + minVal); return false; } } if(!isNaN(minVal) && !isNaN(maxVal)) { if(minVal > maxVal) { f_alert(obj, "起始值" + minVal + "不能大于终止值" + maxVal); }else { if(!(value <= maxVal && value >= minVal)) { f_alert(obj, "值应该在" + minVal + "和" + maxVal + "之间"); return false; } } } return true; }
/*
用途:检查输入字符串是否只由汉字组成
如果通过验证返回true,否则返回false
*/
代码
function f_check_zh(obj){ if (/^[\u4e00-\u9fa5]+$/.test(obj.value)) { return true; } f_alert(obj,"请输入汉字"); return false; }
/*
* 判断是否为小写英文字母,是则返回true,否则返回false
*/
代码
function f_check_lowercase(obj) { if (/^[a-z]+$/.test( obj.value )) { return true; } f_alert(obj,"请输入小写英文字母"); return false; }
/*
* 判断是否为大写英文字母,是则返回true,否则返回false
*/
代码
function f_check_uppercase(obj) { if (/^[A-Z]+$/.test( obj.value )) { return true; } f_alert(obj,"请输入大写英文字母"); return false; }
/*
* 判断是否为英文字母,是则返回true,否则返回false
*/
代码
function f_check_letter(obj) { if (/^[A-Za-z]+$/.test( obj.value )) { return true; } f_alert(obj,"请输入英文字母"); return false; }
*
功能:验证身份证号码是否有效
提示信息:未输入或输入身份证号不正确!
使用:f_check_idno(obj)
返回:bool
*/
代码
function f_check_idno(obj)
{
var acity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
var isum = 0;
var info = "";
var stridno = obj.value;
var idcardlength = stridno.length;
if(!/^\d{17}(\d|x)$/i.test(stridno)&&!/^\d{15}$/i.test(stridno))
{
f_alert(obj,"非法身份证号");
return false;
}
//在后面的运算中x相当于数字10,所以转换成a
stridno = stridno.replace(/x$/i,"a");
if(acity[parseint(stridno.substr(0,2))]==null)
{
f_alert(obj,"非法地区");
return false;
}
if (idcardlength==18)
{
sbirthday=stridno.substr(6,4)+"-"+number(stridno.substr(10,2))+"-"+number(stridno.substr(12,2));
var d = new date(sbirthday.replace(/-/g,"/"))
if(sbirthday!=(d.getfullyear()+"-"+ (d.getmonth()+1) + "-" + d.getdate()))
{
f_alert(obj,"非法生日");
return false;
}
for(var i = 17;i>=0;i --)
isum += (math.pow(2,i) % 11) * parseint(stridno.charat(17 - i),11);
if(isum%11!=1)
{
f_alert(obj,"非法身份证号");
return false;
}
}
else if (idcardlength==15)
{
sbirthday = "19" + stridno.substr(6,2) + "-" + number(stridno.substr(8,2)) + "-" + number(stridno.substr(10,2));
var d = new date(sbirthday.replace(/-/g,"/"))
var dd = d.getfullyear().tostring() + "-" + (d.getmonth()+1) + "-" + d.getdate();
if(sbirthday != dd)
{
f_alert(obj,"非法生日");
return false;
}
}
return true;
}
render_code();
/*
* 判断字符串是否符合指定的正则表达式
*/
代码
function f_check_formatstr(obj)
{
var str = obj.value;
var dtype = obj.eos_datatype;
var regu = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //指定的正则表达式
var re = new regexp(regu);
if(re.test(str))
return true;
f_alert(obj , "不符合指定的正则表达式要求");
return false;
}
render_code();
/*
功能:判断是否为日期(格式:yyyy年mm月dd日,yyyy-mm-dd,yyyy/mm/dd,yyyymmdd)
提示信息:未输入或输入的日期格式错误!
使用:f_check_date(obj)
返回:bool
*/
代码
function f_check_date(obj)
{
var date = trim(obj.value);
var dtype = obj.eos_datatype;
var format = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //日期格式
var year,month,day,datepat,matcharray;
if(/^(y{4})(-|\/)(m{1,2})\2(d{1,2})$/.test(format))
datepat = /^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
else if(/^(y{4})(年)(m{1,2})(月)(d{1,2})(日)$/.test(format))
datepat = /^(\d{4})年(\d{1,2})月(\d{1,2})日$/;
else if(format=="yyyymmdd")
datepat = /^(\d{4})(\d{2})(\d{2})$/;
else
{
f_alert(obj,"日期格式不对");
return false;
}
matcharray = date.match(datepat);
if(matcharray == null)
{
f_alert(obj,"日期长度不对,或日期中有非数字符号");
return false;
}
if(/^(y{4})(-|\/)(m{1,2})\2(d{1,2})$/.test(format))
{
year = matcharray[1];
month = matcharray[3];
day = matcharray[4];
} else
{
year = matcharray[1];
month = matcharray[2];
day = matcharray[3];
}
if (month < 1 || month > 12)
{
f_alert(obj,"月份应该为1到12的整数");
return false;
}
if (day < 1 || day > 31)
{
f_alert(obj,"每个月的天数应该为1到31的整数");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31)
{
f_alert(obj,"该月不存在31号");
return false;
}
if (month==2)
{
var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0));
if (day>29)
{
f_alert(obj,"2月最多有29天");
return false;
}
if ((day==29) && (!isleap))
{
f_alert(obj,"闰年2月才有29天");
return false;
}
}
return true;
}
render_code();
/*
功能:校验的格式为yyyy年mm月dd日hh时mm分ss秒,yyyy-mm-dd hh:mm:ss,yyyy/mm/dd hh:mm:ss,yyyymmddhhmmss
提示信息:未输入或输入的时间格式错误
使用:f_check_time(obj)
返回:bool
*/
代码
function f_check_time(obj)
{
var time = trim(obj.value);
var dtype = obj.eos_datatype;
var format = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //日期格式
var datepat,matcharray,year,month,day,hour,minute,second;
if(/^(y{4})(-|\/)(m{1,2})\2(d{1,2}) (hh:mm:ss)$/.test(format))
datepat = /^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
else if(/^(y{4})(年)(m{1,2})(月)(d{1,2})(日)(hh时mm分ss秒)$/.test(format))
datepat = /^(\d{4})年(\d{1,2})月(\d{1,2})日(\d{1,2})时(\d{1,2})分(\d{1,2})秒$/;
else if(format == "yyyymmddhhmmss")
datepat = /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/;
else
{
f_alert(obj,"日期格式不对");
return false;
}
matcharray = time.match(datepat);
if(matcharray == null)
{
f_alert(obj,"日期长度不对,或日期中有非数字符号");
return false;
}
if(/^(y{4})(-|\/)(m{1,2})\2(d{1,2}) (hh:mm:ss)$/.test(format))
{
year = matcharray[1];
month = matcharray[3];
day = matcharray[4];
hour = matcharray[5];
minute = matcharray[6];
second = matcharray[7];
} else
{
year = matcharray[1];
month = matcharray[2];
day = matcharray[3];
hour = matcharray[4];
minute = matcharray[5];
second = matcharray[6];
}
if (month < 1 || month > 12)
{
f_alert(obj,"月份应该为1到12的整数");
return false;
}
if (day < 1 || day > 31)
{
f_alert(obj,"每个月的天数应该为1到31的整数");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31)
{
f_alert(obj,"该月不存在31号");
return false;
}
if (month==2)
{
var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0));
if (day>29)
{
f_alert(obj,"2月最多有29天");
return false;
}
if ((day==29) && (!isleap))
{
f_alert(obj,"闰年2月才有29天");
return false;
}
}
if(hour<0 || hour>23)
{
f_alert(obj,"小时应该是0到23的整数");
return false;
}
if(minute<0 || minute>59)
{
f_alert(obj,"分应该是0到59的整数");
return false;
}
if(second<0 || second>59)
{
f_alert(obj,"秒应该是0到59的整数");
return false;
}
return true;
}
render_code();
/*判断当前对象是否可见*/
代码
function isvisible(obj){
var visatt,disatt;
try{
disatt=obj.style.display;
visatt=obj.style.visibility;
}catch(e){}
if(disatt=="none" || visatt=="hidden")
return false;
return true;
}
render_code();
/*判断当前对象及其父对象是否可见*/
代码
function checkprvis(obj){
var pr=obj.parentnode;
do{
if(pr == undefined || pr == "undefined") return true;
else{
if(!isvisible(pr)) return false;
}
}while(pr=pr.parentnode);
return true;
}
render_code();
/* 弹出警告对话框,用户点确定后将光标置于出错文本框上, 并且将原来输入内容选中。*/
代码
function f_alert(obj,alertinfo)
{
var caption = obj.getattribute("eos_displayname");
if(caption == null)
caption = "";
alert(caption + ":" + alertinfo + "!");
obj.select();
if(isvisible(obj) && checkprvis(obj))
obj.focus();
}
render_code();
/**
* 检测字符串是否为空
*/
代码
function isnull(str)
{
var i;
if(str.length == 0)
return true;
for (i=0;i {
if (str.charat(i)!=‘ ‘)
return false;
}
return true;
}
render_code();
/**
* 检测指定文本框输入是否合法。
* 如果用户输入的内容有错,则弹出提示对话框,
* 同时将焦点置于该文本框上,并且该文本框前面
* 会出现一个警告图标(输入正确后会自动去掉)。
*/
代码
function checkinput(object)
{
var image;
var i;
var length;
if(object.eos_maxsize + "" != "undefined") length = object.eos_maxsize;
else length = 0;
if (object.eos_isnull=="true" && isnull(object.value)) return true;
/* 长度校验 */
if(length != 0 && strlen(object.value) > parseint(length)) {
f_alert(object, "超出最大长度" + length);
return false;
}
/* 数据类型校验 */
else {
if (object.eos_datatype + "" != "undefined")
{
var dtype = object.eos_datatype;
var objname = object.name;
//如果类型名后面带有括号,则视括号前面的字符串为校验类型
if(dtype.indexof("(") != -1)
dtype = dtype.substring(0,dtype.indexof("("));
//根据页面元素的校验类型进行校验
try{
if(eval("f_check_" + dtype + "(object)") != true)
return false;
}catch(e){return true;}
/* 如果form中存在name前半部分相同,并且同时存在以"min"和"max"结尾的表单域,
那么视为按区间查询。即"min"结尾的表单域的值要小于等于"max"结尾的表单域的值。 */
if(objname.substring((objname.length-3),objname.length)=="min")
{
var objmaxname = objname.substring(0, (objname.length-3)) + "max";
if(document.getelementbyid(objmaxname) != undefined && document.getelementbyid(objmaxname) != "undefined" )
{
if(checkintervalobjs(object, document.getelementbyid(objmaxname)) != true)
return false;
}
}
}
}
return true;
}
render_code();
/* 检测表单中所有输入项的正确性,一般用于表单的onsubmit事件 */
代码
function checkform(myform)
{
var i;
for (i=0;i {
/* 非自定义属性的元素不予理睬 */
if (myform.elements[i].eos_displayname + "" == "undefined") continue;
/* 非空校验 */
if (myform.elements[i].eos_isnull=="false" && isnull(myform.elements[i].value)){
f_alert(myform.elements[i],"不能为空");
return false;
}
/* 数据类型校验 */
if (checkinput(myform.elements[i])==false)
return false;
}
return true;
}
render_code();
/**
* 校验两个表单域数据的大小,目前只允许比较日期和数字。
* @param obj1 小值表单域
* @param obj2 大值表单域
*/
代码
function checkintervalobjs(obj1 , obj2)
{
var caption1 = obj1.getattribute("eos_displayname");
var caption2 = obj2.getattribute("eos_displayname");
var val1 = parsefloat(obj1.value);
var val2 = parsefloat(obj2.value);
// 非自定义属性的元素不予理睬
if (obj1.eos_displayname + "" == "undefined" || obj2.eos_displayname + "" == "undefined") {
return false;
}
// 日期类型的比较
if(f_check_date(obj1) == true && f_check_date(obj2) == true){
var dtype = obj1.eos_datatype;
var format = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //日期格式
val1 = getdatebyformat(obj1.value, format);
dtype = obj2.eos_datatype;
format = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //日期格式
val2 = getdatebyformat(obj2.value, format);
if(val1 > val2){
obj2.select();
if(isvisible(obj) && checkprvis(obj))
obj2.focus();
alert(caption1 + "的起始日期不能大于其终止日期!");
return false;
}
}
// 数字类型的比较
if((isnan(val1) && !isnull(val1)) || (isnan(val2) && !isnull(val2))){
alert(caption1 + "的值不全为数字则不能比较!");
return false;
}
if(val1 > val2){
obj2.select();
if(isvisible(obj) && checkprvis(obj))
obj2.focus();
alert(caption1 + "的起始值不能大于其终止值!");
return false;
}
return true;
}
render_code();
/*根据日期格式,将字符串转换成date对象。
格式:yyyy-年,mm-月,dd-日,hh-时,mm-分,ss-秒。
(格式必须写全,例如:yy-m-d,是不允许的,否则返回null;格式与实际数据不符也返回null。)
默认格式:yyyy-mm-dd hh:mm:ss,yyyy-mm-dd。*/
代码
function getdatebyformat(str){
var datereg,format;
var y,m,d,h,m,s,yi,mi,di,hi,mi,si;
if((arguments[1] + "") == "undefined") format = "yyyy-mm-dd hh:mm:ss";
else format = arguments[1];
yi = format.indexof("yyyy");
mi = format.indexof("mm");
di = format.indexof("dd");
hi = format.indexof("hh");
mi = format.indexof("mm");
si = format.indexof("ss");
if(yi == -1 || mi == -1 || di == -1) return null;
else{
y = parseint(str.substring(yi, yi+4));
m = parseint(str.substring(mi, mi+2));
d = parseint(str.substring(di, di+2));
}
if(isnan(y) || isnan(m) || isnan(d)) return null;
if(hi == -1 || mi == -1 || si == -1) return new date(y, m-1, d);
else{
h = str.substring(hi, hi+4);
m = str.substring(mi, mi+2);
s = str.substring(si, si+2);
}
if(isnan(parseint(y)) || isnan(parseint(m)) || isnan(parseint(d))) return new date(y, m-1, d);
else return new date(y, m-1, d,h, m, s);
}
render_code();
/*ltrim(string):去除左边的空格*/
代码
function ltrim(str){
var whitespace = new string(" \t\n\r");
var s = new string(str);
if (whitespace.indexof(s.charat(0)) != -1){
var j=0, i = s.length;
while (j < i && whitespace.indexof(s.charat(j)) != -1){
j++;
}
s = s.substring(j, i);
}
return s;
}
render_code();
/*rtrim(string):去除右边的空格*/
代码
function rtrim(str){
var whitespace = new string(" \t\n\r");
var s = new string(str);
if (whitespace.indexof(s.charat(s.length-1)) != -1){
var i = s.length - 1;
while (i >= 0 && whitespace.indexof(s.charat(i)) != -1){
i--;
}
s = s.substring(0, i+1);
}
return s;
}
render_code();
/*trim(string):去除字符串两边的空格*/
代码
function trim(str){
return rtrim(ltrim(str));
}
代码为:
function f_check_time(obj)
{
var time = Trim(obj.value);
var dtype = obj.eos_datatype;
var format = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")); //日期格式
var datePat,matchArray,year,month,day,hour,minute,second;
if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2}) (HH:mm:ss)$/.test(format))
datePat = /^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
else if(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)(HH时mm分ss秒)$/.test(format))
datePat = /^(\d{4})年(\d{1,2})月(\d{1,2})日(\d{1,2})时(\d{1,2})分(\d{1,2})秒$/;
else if(format == "yyyyMMddHHmmss")
datePat = /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/;
else
{
f_alert(obj,"日期格式不对");
return false;
}
matchArray = time.match(datePat);
if(matchArray == null)
{
f_alert(obj,"日期长度不对,或日期中有非数字符号");
return false;
}
if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2}) (HH:mm:ss)$/.test(format))
{
year = matchArray[1];
month = matchArray[3];
day = matchArray[4];
hour = matchArray[5];
minute = matchArray[6];
second = matchArray[7];
} else
{
year = matchArray[1];
month = matchArray[2];
day = matchArray[3];
hour = matchArray[4];
minute = matchArray[5];
second = matchArray[6];
}
if (month < 1 || month > 12)
{
f_alert(obj,"月份应该为1到12的整数");
return false;
}
if (day < 1 || day > 31)
{
f_alert(obj,"每个月的天数应该为1到31的整数");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31)
{
f_alert(obj,"该月不存在31号");
return false;
}
if (month==2)
{
var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0));
if (day>29)
{
f_alert(obj,"2月最多有29天");
return false;
}
if ((day==29) && (!isleap))
{
f_alert(obj,"闰年2月才有29天");
return false;
}
}
if(hour<0 || hour>23)
{
f_alert(obj,"小时应该是0到23的整数");
return false;
}
if(minute<0 || minute>59)
{
f_alert(obj,"分应该是0到59的整数");
return false;
}
if(second<0 || second>59)
{
f_alert(obj,"秒应该是0到59的整数");
return false;
}
return true;
}
/*********************
*判断当前对象是否可见*
*********************/
代码为:
function isVisible(obj){
var visAtt,disAtt;
try{
disAtt=obj.style.display;
visAtt=obj.style.visibility;
}catch(e){}
if(disAtt=="none" || visAtt=="hidden")
return false;
return true;
}
/*******************************
*判断当前对象及其父对象是否可见*
*******************************/
代码为:
function checkPrVis(obj){
var pr=obj.parentNode;
do{
if(pr == undefined || pr == "undefined") return true;
else{
if(!isVisible(pr)) return false;
}
}while(pr=pr.parentNode);
return true;
}
/******************************************************************************
*弹出警告对话框,用户点确定后将光标置于出错文本框上, 并且将原来输入内容选中。*
******************************************************************************/
代码为:
function f_alert(obj,alertInfo)
{
var caption = obj.getAttribute("eos_displayname");
if(caption == null)
caption = "";
alert(caption + ":" + alertInfo + "!");
obj.select();
if(isVisible(obj) && checkPrVis(obj))
obj.focus();
}
/********************
* 检测字符串是否为空*
********************/
代码为:
function isnull(str)
{
var i;
if(str.length == 0)
return true;
for (i=0;i {
if (str.charAt(i)!=' ')
return false;
}
return true;
}
/*********************************************
* 检测指定文本框输入是否合法。 *
* 如果用户输入的内容有错,则弹出提示对话框, *
* 同时将焦点置于该文本框上,并且该文本框前面 *
* 会出现一个警告图标(输入正确后会自动去掉)。 *
*********************************************/
代码为:
function checkInput(object)
{
var image;
var i;
var length;
if(object.eos_maxsize + "" != "undefined") length = object.eos_maxsize;
else length = 0;
if (object.eos_isnull=="true" && isnull(object.value)) return true;
/* 长度校验 */
if(length != 0 && strlen(object.value) > parseInt(length)) {
f_alert(object, "超出最大长度" + length);
return false;
}
/* 数据类型校验 */
else {
if (object.eos_datatype + "" != "undefined")
{
var dtype = object.eos_datatype;
var objName = object.name;
//如果类型名后面带有括号,则视括号前面的字符串为校验类型
if(dtype.indexOf("(") != -1)
dtype = dtype.substring(0,dtype.indexOf("("));
//根据页面元素的校验类型进行校验
try{
if(eval("f_check_" + dtype + "(object)") != true)
return false;
}catch(e){return true;}
/* 如果form中存在name前半部分相同,并且同时存在以"min"和"max"结尾的表单域,
那么视为按区间查询。即"min"结尾的表单域的值要小于等于"max"结尾的表单域的值。 */
if(objName.substring((objName.length-3),objName.length)=="min")
{
var objMaxName = objName.substring(0, (objName.length-3)) + "max";
if(document.getElementById(objMaxName) != undefined && document.getElementById(objMaxName) != "undefined" )
{
if(checkIntervalObjs(object, document.getElementById(objMaxName)) != true)
return false;
}
}
}
}
return true;
}
/*********************************************************
*检测表单中所有输入项的正确性,一般用于表单的onsubmit事件*
*********************************************************/
代码为:
function checkForm(myform)
{
var i;
for (i=0;i {
/* 非自定义属性的元素不予理睬 */
if (myform.elements[i].eos_displayname + "" == "undefined") continue;
/* 非空校验 */
if (myform.elements[i].eos_isnull=="false" && isnull(myform.elements[i].value)){
f_alert(myform.elements[i],"不能为空");
return false;
}
/* 数据类型校验 */
if (checkInput(myform.elements[i])==false)
return false;
}
return true;
}
/******************************************************
* 校验两个表单域数据的大小,目前只允许比较日期和数字。*
* @param obj1 小值表单域 *
* @param obj2 大值表单域 *
******************************************************/
代码为:
function checkIntervalObjs(obj1 , obj2)
{
var caption1 = obj1.getAttribute("eos_displayname");
var caption2 = obj2.getAttribute("eos_displayname");
var val1 = parseFloat(obj1.value);
var val2 = parseFloat(obj2.value);
// 非自定义属性的元素不予理睬
if (obj1.eos_displayname + "" == "undefined" || obj2.eos_displayname + "" == "undefined") {
return false;
}
// 日期类型的比较
if(f_check_date(obj1) == true && f_check_date(obj2) == true){
var dtype = obj1.eos_datatype;
var format = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")); //日期格式
val1 = getDateByFormat(obj1.value, format);
dtype = obj2.eos_datatype;
format = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")); //日期格式
val2 = getDateByFormat(obj2.value, format);
if(val1 > val2){
obj2.select();
if(isVisible(obj) && checkPrVis(obj))
obj2.focus();
alert(caption1 + "的起始日期不能大于其终止日期!");
return false;
}
}
// 数字类型的比较
if((isNaN(val1) && !isnull(val1)) || (isNaN(val2) && !isnull(val2))){
alert(caption1 + "的值不全为数字则不能比较!");
return false;
}
if(val1 > val2){
obj2.select();
if(isVisible(obj) && checkPrVis(obj))
obj2.focus();
alert(caption1 + "的起始值不能大于其终止值!");
return false;
}
return true;
}
/****************************************************************************************
*根据日期格式,将字符串转换成Date对象。 *
*格式:yyyy-年,MM-月,dd-日,HH-时,mm-分,ss-秒。 *
*(格式必须写全,例如:yy-M-d,是不允许的,否则返回null;格式与实际数据不符也返回null。)*
*默认格式:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd。 *
****************************************************************************************/
代码为:
function getDateByFormat(str){
var dateReg,format;
var y,M,d,H,m,s,yi,Mi,di,Hi,mi,si;
if((arguments[1] + "") == "undefined") format = "yyyy-MM-dd HH:mm:ss";
else format = arguments[1];
yi = format.indexOf("yyyy");
Mi = format.indexOf("MM");
di = format.indexOf("dd");
Hi = format.indexOf("HH");
mi = format.indexOf("mm");
si = format.indexOf("ss");
if(yi == -1 || Mi == -1 || di == -1) return null;
else{
y = parseInt(str.substring(yi, yi+4));
M = parseInt(str.substring(Mi, Mi+2));
d = parseInt(str.substring(di, di+2));
}
if(isNaN(y) || isNaN(M) || isNaN(d)) return null;
if(Hi == -1 || mi == -1 || si == -1) return new Date(y, M-1, d);
else{
H = str.substring(Hi, Hi+4);
m = str.substring(mi, mi+2);
s = str.substring(si, si+2);
}
if(isNaN(parseInt(y)) || isNaN(parseInt(M)) || isNaN(parseInt(d))) return new Date(y, M-1, d);
else return new Date(y, M-1, d,H, m, s);
}
/*****************************
*LTrim(string):去除左边的空格*
*****************************/
代码为:
function LTrim(str){
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(0)) != -1){
var j=0, i = s.length;
while (j < i && whitespace.indexOf(s.charAt(j)) != -1){
j++;
}
s = s.substring(j, i);
}
return s;
}
/*****************************
*RTrim(string):去除右边的空格*
*****************************/
代码为:
function RTrim(str){
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(s.length-1)) != -1){
var i = s.length - 1;
while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1){
i--;
}
s = s.substring(0, i+1);
}
return s;
}
/**********************************
*Trim(string):去除字符串两边的空格*
**********************************/
代码为:为:
function Trim(str){
return RTrim(LTrim(str));
}
/**
* 取得字符串的字节长度
*/
代码
function strlen(str) { var i; var len; len = 0; for (i=0;i<str.length;i++) { if (str.charCodeAt(i)>255) len+=2; else len++; } return len; }
/*
* 判断是否为数字,是则返回true,否则返回false
*/
代码
function f_check_number(obj) { if (/^\d+$/.test(obj.value)) { return true; } else { f_alert(obj,"请输入数字"); return false; } }
/*
* 判断是否为自然数,是则返回true,否则返回false
*/
代码
function f_check_naturalnumber(obj) { var s = obj.value; if (/^[0-9]+$/.test( s ) && (s > 0)) { return true; } else { f_alert(obj,"请输入自然数"); return false; } }
/*
* 判断是否为整数,是则返回true,否则返回false
*/
代码
function f_check_integer(obj) { if (/^(\+|-)?\d+$/.test( obj.value )) { return true; } else { f_alert(obj,"请输入整数"); return false; } }
/*
* 判断是否为实数,是则返回true,否则返回false
*/
代码
function f_check_float(obj) { if (/^(\+|-)?\d+($|\.\d+$)/.test( obj.value )) { return true; } else { f_alert(obj,"请输入实数"); return false; } }
/*
* 校验数字的长度和精度
*/
代码
function f_check_double(obj){ var numReg; var value = obj.value; var strValueTemp, strInt, strDec; var dtype = obj.eos_datatype; var pos_dtype = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")).split(","); var len = pos_dtype[0], prec = pos_dtype[1]; try { numReg =/[\-]/; strValueTemp = value.replace(numReg, ""); numReg =/[\+]/; strValueTemp = strValueTemp.replace(numReg, ""); //整数 if(prec==0){ numReg =/[\.]/; if(numReg.test(value) == true){ f_alert(obj, "输入必须为整数类型"); return false; } } if(strValueTemp.indexOf(".") < 0 ){ if(strValueTemp.length >( len - prec)){ f_alert(obj, "整数位不能超过"+ (len - prec) +"位"); return false; } }else{ strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") ); if(strInt.length >( len - prec)){ f_alert(obj, "整数位不能超过"+ (len - prec) +"位"); return false; } strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length ); if(strDec.length > prec){ f_alert(obj, "小数位不能超过"+ prec +"位"); return false; } } return true; }catch(e){ alert("in f_check_double = " + e); return false; } }
/*
* 校验数字的最小最大值
* 返回bool
*/
代码
function f_check_interval(obj) { var value = parseFloat(obj.value); var dtype = obj.eos_datatype; var pos_dtype = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")).split(","); var minLimit = pos_dtype[0]; var maxLimit = pos_dtype[1]; var minVal = parseFloat(pos_dtype[0]); var maxVal = parseFloat(pos_dtype[1]); if(isNaN(value)) { f_alert(obj, "值必须为数字"); return false; } if((isNaN(minVal) && (minLimit != "-")) || (isNaN(maxVal) && (maxLimit != "+"))) { f_alert(obj, "边界值必须为数字或-、+"); return false; } if(minLimit == "-" && !isNaN(maxVal)) { if(value > maxVal) { f_alert(obj, "值不能超过" + maxVal); return false; } } if(!isNaN(minVal) && maxLimit == "+") { if(value < minVal) { f_alert(obj, "值不能小于" + minVal); return false; } } if(!isNaN(minVal) && !isNaN(maxVal)) { if(minVal > maxVal) { f_alert(obj, "起始值" + minVal + "不能大于终止值" + maxVal); }else { if(!(value <= maxVal && value >= minVal)) { f_alert(obj, "值应该在" + minVal + "和" + maxVal + "之间"); return false; } } } return true; }
/*
用途:检查输入字符串是否只由汉字组成
如果通过验证返回true,否则返回false
*/
代码
function f_check_zh(obj){ if (/^[\u4e00-\u9fa5]+$/.test(obj.value)) { return true; } f_alert(obj,"请输入汉字"); return false; }
/*
* 判断是否为小写英文字母,是则返回true,否则返回false
*/
代码
function f_check_lowercase(obj) { if (/^[a-z]+$/.test( obj.value )) { return true; } f_alert(obj,"请输入小写英文字母"); return false; }
/*
* 判断是否为大写英文字母,是则返回true,否则返回false
*/
代码
function f_check_uppercase(obj) { if (/^[A-Z]+$/.test( obj.value )) { return true; } f_alert(obj,"请输入大写英文字母"); return false; }
/*
* 判断是否为英文字母,是则返回true,否则返回false
*/
代码
function f_check_letter(obj) { if (/^[A-Za-z]+$/.test( obj.value )) { return true; } f_alert(obj,"请输入英文字母"); return false; }
*
功能:验证身份证号码是否有效
提示信息:未输入或输入身份证号不正确!
使用:f_check_idno(obj)
返回:bool
*/
代码
function f_check_idno(obj)
{
var acity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
var isum = 0;
var info = "";
var stridno = obj.value;
var idcardlength = stridno.length;
if(!/^\d{17}(\d|x)$/i.test(stridno)&&!/^\d{15}$/i.test(stridno))
{
f_alert(obj,"非法身份证号");
return false;
}
//在后面的运算中x相当于数字10,所以转换成a
stridno = stridno.replace(/x$/i,"a");
if(acity[parseint(stridno.substr(0,2))]==null)
{
f_alert(obj,"非法地区");
return false;
}
if (idcardlength==18)
{
sbirthday=stridno.substr(6,4)+"-"+number(stridno.substr(10,2))+"-"+number(stridno.substr(12,2));
var d = new date(sbirthday.replace(/-/g,"/"))
if(sbirthday!=(d.getfullyear()+"-"+ (d.getmonth()+1) + "-" + d.getdate()))
{
f_alert(obj,"非法生日");
return false;
}
for(var i = 17;i>=0;i --)
isum += (math.pow(2,i) % 11) * parseint(stridno.charat(17 - i),11);
if(isum%11!=1)
{
f_alert(obj,"非法身份证号");
return false;
}
}
else if (idcardlength==15)
{
sbirthday = "19" + stridno.substr(6,2) + "-" + number(stridno.substr(8,2)) + "-" + number(stridno.substr(10,2));
var d = new date(sbirthday.replace(/-/g,"/"))
var dd = d.getfullyear().tostring() + "-" + (d.getmonth()+1) + "-" + d.getdate();
if(sbirthday != dd)
{
f_alert(obj,"非法生日");
return false;
}
}
return true;
}
render_code();
/*
* 判断字符串是否符合指定的正则表达式
*/
代码
function f_check_formatstr(obj)
{
var str = obj.value;
var dtype = obj.eos_datatype;
var regu = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //指定的正则表达式
var re = new regexp(regu);
if(re.test(str))
return true;
f_alert(obj , "不符合指定的正则表达式要求");
return false;
}
render_code();
/*
功能:判断是否为日期(格式:yyyy年mm月dd日,yyyy-mm-dd,yyyy/mm/dd,yyyymmdd)
提示信息:未输入或输入的日期格式错误!
使用:f_check_date(obj)
返回:bool
*/
代码
function f_check_date(obj)
{
var date = trim(obj.value);
var dtype = obj.eos_datatype;
var format = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //日期格式
var year,month,day,datepat,matcharray;
if(/^(y{4})(-|\/)(m{1,2})\2(d{1,2})$/.test(format))
datepat = /^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
else if(/^(y{4})(年)(m{1,2})(月)(d{1,2})(日)$/.test(format))
datepat = /^(\d{4})年(\d{1,2})月(\d{1,2})日$/;
else if(format=="yyyymmdd")
datepat = /^(\d{4})(\d{2})(\d{2})$/;
else
{
f_alert(obj,"日期格式不对");
return false;
}
matcharray = date.match(datepat);
if(matcharray == null)
{
f_alert(obj,"日期长度不对,或日期中有非数字符号");
return false;
}
if(/^(y{4})(-|\/)(m{1,2})\2(d{1,2})$/.test(format))
{
year = matcharray[1];
month = matcharray[3];
day = matcharray[4];
} else
{
year = matcharray[1];
month = matcharray[2];
day = matcharray[3];
}
if (month < 1 || month > 12)
{
f_alert(obj,"月份应该为1到12的整数");
return false;
}
if (day < 1 || day > 31)
{
f_alert(obj,"每个月的天数应该为1到31的整数");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31)
{
f_alert(obj,"该月不存在31号");
return false;
}
if (month==2)
{
var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0));
if (day>29)
{
f_alert(obj,"2月最多有29天");
return false;
}
if ((day==29) && (!isleap))
{
f_alert(obj,"闰年2月才有29天");
return false;
}
}
return true;
}
render_code();
/*
功能:校验的格式为yyyy年mm月dd日hh时mm分ss秒,yyyy-mm-dd hh:mm:ss,yyyy/mm/dd hh:mm:ss,yyyymmddhhmmss
提示信息:未输入或输入的时间格式错误
使用:f_check_time(obj)
返回:bool
*/
代码
function f_check_time(obj)
{
var time = trim(obj.value);
var dtype = obj.eos_datatype;
var format = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //日期格式
var datepat,matcharray,year,month,day,hour,minute,second;
if(/^(y{4})(-|\/)(m{1,2})\2(d{1,2}) (hh:mm:ss)$/.test(format))
datepat = /^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
else if(/^(y{4})(年)(m{1,2})(月)(d{1,2})(日)(hh时mm分ss秒)$/.test(format))
datepat = /^(\d{4})年(\d{1,2})月(\d{1,2})日(\d{1,2})时(\d{1,2})分(\d{1,2})秒$/;
else if(format == "yyyymmddhhmmss")
datepat = /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/;
else
{
f_alert(obj,"日期格式不对");
return false;
}
matcharray = time.match(datepat);
if(matcharray == null)
{
f_alert(obj,"日期长度不对,或日期中有非数字符号");
return false;
}
if(/^(y{4})(-|\/)(m{1,2})\2(d{1,2}) (hh:mm:ss)$/.test(format))
{
year = matcharray[1];
month = matcharray[3];
day = matcharray[4];
hour = matcharray[5];
minute = matcharray[6];
second = matcharray[7];
} else
{
year = matcharray[1];
month = matcharray[2];
day = matcharray[3];
hour = matcharray[4];
minute = matcharray[5];
second = matcharray[6];
}
if (month < 1 || month > 12)
{
f_alert(obj,"月份应该为1到12的整数");
return false;
}
if (day < 1 || day > 31)
{
f_alert(obj,"每个月的天数应该为1到31的整数");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31)
{
f_alert(obj,"该月不存在31号");
return false;
}
if (month==2)
{
var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0));
if (day>29)
{
f_alert(obj,"2月最多有29天");
return false;
}
if ((day==29) && (!isleap))
{
f_alert(obj,"闰年2月才有29天");
return false;
}
}
if(hour<0 || hour>23)
{
f_alert(obj,"小时应该是0到23的整数");
return false;
}
if(minute<0 || minute>59)
{
f_alert(obj,"分应该是0到59的整数");
return false;
}
if(second<0 || second>59)
{
f_alert(obj,"秒应该是0到59的整数");
return false;
}
return true;
}
render_code();
/*判断当前对象是否可见*/
代码
function isvisible(obj){
var visatt,disatt;
try{
disatt=obj.style.display;
visatt=obj.style.visibility;
}catch(e){}
if(disatt=="none" || visatt=="hidden")
return false;
return true;
}
render_code();
/*判断当前对象及其父对象是否可见*/
代码
function checkprvis(obj){
var pr=obj.parentnode;
do{
if(pr == undefined || pr == "undefined") return true;
else{
if(!isvisible(pr)) return false;
}
}while(pr=pr.parentnode);
return true;
}
render_code();
/* 弹出警告对话框,用户点确定后将光标置于出错文本框上, 并且将原来输入内容选中。*/
代码
function f_alert(obj,alertinfo)
{
var caption = obj.getattribute("eos_displayname");
if(caption == null)
caption = "";
alert(caption + ":" + alertinfo + "!");
obj.select();
if(isvisible(obj) && checkprvis(obj))
obj.focus();
}
render_code();
/**
* 检测字符串是否为空
*/
代码
function isnull(str)
{
var i;
if(str.length == 0)
return true;
for (i=0;i {
if (str.charat(i)!=‘ ‘)
return false;
}
return true;
}
render_code();
/**
* 检测指定文本框输入是否合法。
* 如果用户输入的内容有错,则弹出提示对话框,
* 同时将焦点置于该文本框上,并且该文本框前面
* 会出现一个警告图标(输入正确后会自动去掉)。
*/
代码
function checkinput(object)
{
var image;
var i;
var length;
if(object.eos_maxsize + "" != "undefined") length = object.eos_maxsize;
else length = 0;
if (object.eos_isnull=="true" && isnull(object.value)) return true;
/* 长度校验 */
if(length != 0 && strlen(object.value) > parseint(length)) {
f_alert(object, "超出最大长度" + length);
return false;
}
/* 数据类型校验 */
else {
if (object.eos_datatype + "" != "undefined")
{
var dtype = object.eos_datatype;
var objname = object.name;
//如果类型名后面带有括号,则视括号前面的字符串为校验类型
if(dtype.indexof("(") != -1)
dtype = dtype.substring(0,dtype.indexof("("));
//根据页面元素的校验类型进行校验
try{
if(eval("f_check_" + dtype + "(object)") != true)
return false;
}catch(e){return true;}
/* 如果form中存在name前半部分相同,并且同时存在以"min"和"max"结尾的表单域,
那么视为按区间查询。即"min"结尾的表单域的值要小于等于"max"结尾的表单域的值。 */
if(objname.substring((objname.length-3),objname.length)=="min")
{
var objmaxname = objname.substring(0, (objname.length-3)) + "max";
if(document.getelementbyid(objmaxname) != undefined && document.getelementbyid(objmaxname) != "undefined" )
{
if(checkintervalobjs(object, document.getelementbyid(objmaxname)) != true)
return false;
}
}
}
}
return true;
}
render_code();
/* 检测表单中所有输入项的正确性,一般用于表单的onsubmit事件 */
代码
function checkform(myform)
{
var i;
for (i=0;i {
/* 非自定义属性的元素不予理睬 */
if (myform.elements[i].eos_displayname + "" == "undefined") continue;
/* 非空校验 */
if (myform.elements[i].eos_isnull=="false" && isnull(myform.elements[i].value)){
f_alert(myform.elements[i],"不能为空");
return false;
}
/* 数据类型校验 */
if (checkinput(myform.elements[i])==false)
return false;
}
return true;
}
render_code();
/**
* 校验两个表单域数据的大小,目前只允许比较日期和数字。
* @param obj1 小值表单域
* @param obj2 大值表单域
*/
代码
function checkintervalobjs(obj1 , obj2)
{
var caption1 = obj1.getattribute("eos_displayname");
var caption2 = obj2.getattribute("eos_displayname");
var val1 = parsefloat(obj1.value);
var val2 = parsefloat(obj2.value);
// 非自定义属性的元素不予理睬
if (obj1.eos_displayname + "" == "undefined" || obj2.eos_displayname + "" == "undefined") {
return false;
}
// 日期类型的比较
if(f_check_date(obj1) == true && f_check_date(obj2) == true){
var dtype = obj1.eos_datatype;
var format = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //日期格式
val1 = getdatebyformat(obj1.value, format);
dtype = obj2.eos_datatype;
format = dtype.substring(dtype.indexof("(")+1,dtype.indexof(")")); //日期格式
val2 = getdatebyformat(obj2.value, format);
if(val1 > val2){
obj2.select();
if(isvisible(obj) && checkprvis(obj))
obj2.focus();
alert(caption1 + "的起始日期不能大于其终止日期!");
return false;
}
}
// 数字类型的比较
if((isnan(val1) && !isnull(val1)) || (isnan(val2) && !isnull(val2))){
alert(caption1 + "的值不全为数字则不能比较!");
return false;
}
if(val1 > val2){
obj2.select();
if(isvisible(obj) && checkprvis(obj))
obj2.focus();
alert(caption1 + "的起始值不能大于其终止值!");
return false;
}
return true;
}
render_code();
/*根据日期格式,将字符串转换成date对象。
格式:yyyy-年,mm-月,dd-日,hh-时,mm-分,ss-秒。
(格式必须写全,例如:yy-m-d,是不允许的,否则返回null;格式与实际数据不符也返回null。)
默认格式:yyyy-mm-dd hh:mm:ss,yyyy-mm-dd。*/
代码
function getdatebyformat(str){
var datereg,format;
var y,m,d,h,m,s,yi,mi,di,hi,mi,si;
if((arguments[1] + "") == "undefined") format = "yyyy-mm-dd hh:mm:ss";
else format = arguments[1];
yi = format.indexof("yyyy");
mi = format.indexof("mm");
di = format.indexof("dd");
hi = format.indexof("hh");
mi = format.indexof("mm");
si = format.indexof("ss");
if(yi == -1 || mi == -1 || di == -1) return null;
else{
y = parseint(str.substring(yi, yi+4));
m = parseint(str.substring(mi, mi+2));
d = parseint(str.substring(di, di+2));
}
if(isnan(y) || isnan(m) || isnan(d)) return null;
if(hi == -1 || mi == -1 || si == -1) return new date(y, m-1, d);
else{
h = str.substring(hi, hi+4);
m = str.substring(mi, mi+2);
s = str.substring(si, si+2);
}
if(isnan(parseint(y)) || isnan(parseint(m)) || isnan(parseint(d))) return new date(y, m-1, d);
else return new date(y, m-1, d,h, m, s);
}
render_code();
/*ltrim(string):去除左边的空格*/
代码
function ltrim(str){
var whitespace = new string(" \t\n\r");
var s = new string(str);
if (whitespace.indexof(s.charat(0)) != -1){
var j=0, i = s.length;
while (j < i && whitespace.indexof(s.charat(j)) != -1){
j++;
}
s = s.substring(j, i);
}
return s;
}
render_code();
/*rtrim(string):去除右边的空格*/
代码
function rtrim(str){
var whitespace = new string(" \t\n\r");
var s = new string(str);
if (whitespace.indexof(s.charat(s.length-1)) != -1){
var i = s.length - 1;
while (i >= 0 && whitespace.indexof(s.charat(i)) != -1){
i--;
}
s = s.substring(0, i+1);
}
return s;
}
render_code();
/*trim(string):去除字符串两边的空格*/
代码
function trim(str){
return rtrim(ltrim(str));
}
代码为:
function f_check_time(obj)
{
var time = Trim(obj.value);
var dtype = obj.eos_datatype;
var format = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")); //日期格式
var datePat,matchArray,year,month,day,hour,minute,second;
if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2}) (HH:mm:ss)$/.test(format))
datePat = /^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
else if(/^(y{4})(年)(M{1,2})(月)(d{1,2})(日)(HH时mm分ss秒)$/.test(format))
datePat = /^(\d{4})年(\d{1,2})月(\d{1,2})日(\d{1,2})时(\d{1,2})分(\d{1,2})秒$/;
else if(format == "yyyyMMddHHmmss")
datePat = /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/;
else
{
f_alert(obj,"日期格式不对");
return false;
}
matchArray = time.match(datePat);
if(matchArray == null)
{
f_alert(obj,"日期长度不对,或日期中有非数字符号");
return false;
}
if(/^(y{4})(-|\/)(M{1,2})\2(d{1,2}) (HH:mm:ss)$/.test(format))
{
year = matchArray[1];
month = matchArray[3];
day = matchArray[4];
hour = matchArray[5];
minute = matchArray[6];
second = matchArray[7];
} else
{
year = matchArray[1];
month = matchArray[2];
day = matchArray[3];
hour = matchArray[4];
minute = matchArray[5];
second = matchArray[6];
}
if (month < 1 || month > 12)
{
f_alert(obj,"月份应该为1到12的整数");
return false;
}
if (day < 1 || day > 31)
{
f_alert(obj,"每个月的天数应该为1到31的整数");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31)
{
f_alert(obj,"该月不存在31号");
return false;
}
if (month==2)
{
var isleap=(year % 4==0 && (year % 100 !=0 || year % 400==0));
if (day>29)
{
f_alert(obj,"2月最多有29天");
return false;
}
if ((day==29) && (!isleap))
{
f_alert(obj,"闰年2月才有29天");
return false;
}
}
if(hour<0 || hour>23)
{
f_alert(obj,"小时应该是0到23的整数");
return false;
}
if(minute<0 || minute>59)
{
f_alert(obj,"分应该是0到59的整数");
return false;
}
if(second<0 || second>59)
{
f_alert(obj,"秒应该是0到59的整数");
return false;
}
return true;
}
/*********************
*判断当前对象是否可见*
*********************/
代码为:
function isVisible(obj){
var visAtt,disAtt;
try{
disAtt=obj.style.display;
visAtt=obj.style.visibility;
}catch(e){}
if(disAtt=="none" || visAtt=="hidden")
return false;
return true;
}
/*******************************
*判断当前对象及其父对象是否可见*
*******************************/
代码为:
function checkPrVis(obj){
var pr=obj.parentNode;
do{
if(pr == undefined || pr == "undefined") return true;
else{
if(!isVisible(pr)) return false;
}
}while(pr=pr.parentNode);
return true;
}
/******************************************************************************
*弹出警告对话框,用户点确定后将光标置于出错文本框上, 并且将原来输入内容选中。*
******************************************************************************/
代码为:
function f_alert(obj,alertInfo)
{
var caption = obj.getAttribute("eos_displayname");
if(caption == null)
caption = "";
alert(caption + ":" + alertInfo + "!");
obj.select();
if(isVisible(obj) && checkPrVis(obj))
obj.focus();
}
/********************
* 检测字符串是否为空*
********************/
代码为:
function isnull(str)
{
var i;
if(str.length == 0)
return true;
for (i=0;i {
if (str.charAt(i)!=' ')
return false;
}
return true;
}
/*********************************************
* 检测指定文本框输入是否合法。 *
* 如果用户输入的内容有错,则弹出提示对话框, *
* 同时将焦点置于该文本框上,并且该文本框前面 *
* 会出现一个警告图标(输入正确后会自动去掉)。 *
*********************************************/
代码为:
function checkInput(object)
{
var image;
var i;
var length;
if(object.eos_maxsize + "" != "undefined") length = object.eos_maxsize;
else length = 0;
if (object.eos_isnull=="true" && isnull(object.value)) return true;
/* 长度校验 */
if(length != 0 && strlen(object.value) > parseInt(length)) {
f_alert(object, "超出最大长度" + length);
return false;
}
/* 数据类型校验 */
else {
if (object.eos_datatype + "" != "undefined")
{
var dtype = object.eos_datatype;
var objName = object.name;
//如果类型名后面带有括号,则视括号前面的字符串为校验类型
if(dtype.indexOf("(") != -1)
dtype = dtype.substring(0,dtype.indexOf("("));
//根据页面元素的校验类型进行校验
try{
if(eval("f_check_" + dtype + "(object)") != true)
return false;
}catch(e){return true;}
/* 如果form中存在name前半部分相同,并且同时存在以"min"和"max"结尾的表单域,
那么视为按区间查询。即"min"结尾的表单域的值要小于等于"max"结尾的表单域的值。 */
if(objName.substring((objName.length-3),objName.length)=="min")
{
var objMaxName = objName.substring(0, (objName.length-3)) + "max";
if(document.getElementById(objMaxName) != undefined && document.getElementById(objMaxName) != "undefined" )
{
if(checkIntervalObjs(object, document.getElementById(objMaxName)) != true)
return false;
}
}
}
}
return true;
}
/*********************************************************
*检测表单中所有输入项的正确性,一般用于表单的onsubmit事件*
*********************************************************/
代码为:
function checkForm(myform)
{
var i;
for (i=0;i {
/* 非自定义属性的元素不予理睬 */
if (myform.elements[i].eos_displayname + "" == "undefined") continue;
/* 非空校验 */
if (myform.elements[i].eos_isnull=="false" && isnull(myform.elements[i].value)){
f_alert(myform.elements[i],"不能为空");
return false;
}
/* 数据类型校验 */
if (checkInput(myform.elements[i])==false)
return false;
}
return true;
}
/******************************************************
* 校验两个表单域数据的大小,目前只允许比较日期和数字。*
* @param obj1 小值表单域 *
* @param obj2 大值表单域 *
******************************************************/
代码为:
function checkIntervalObjs(obj1 , obj2)
{
var caption1 = obj1.getAttribute("eos_displayname");
var caption2 = obj2.getAttribute("eos_displayname");
var val1 = parseFloat(obj1.value);
var val2 = parseFloat(obj2.value);
// 非自定义属性的元素不予理睬
if (obj1.eos_displayname + "" == "undefined" || obj2.eos_displayname + "" == "undefined") {
return false;
}
// 日期类型的比较
if(f_check_date(obj1) == true && f_check_date(obj2) == true){
var dtype = obj1.eos_datatype;
var format = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")); //日期格式
val1 = getDateByFormat(obj1.value, format);
dtype = obj2.eos_datatype;
format = dtype.substring(dtype.indexOf("(")+1,dtype.indexOf(")")); //日期格式
val2 = getDateByFormat(obj2.value, format);
if(val1 > val2){
obj2.select();
if(isVisible(obj) && checkPrVis(obj))
obj2.focus();
alert(caption1 + "的起始日期不能大于其终止日期!");
return false;
}
}
// 数字类型的比较
if((isNaN(val1) && !isnull(val1)) || (isNaN(val2) && !isnull(val2))){
alert(caption1 + "的值不全为数字则不能比较!");
return false;
}
if(val1 > val2){
obj2.select();
if(isVisible(obj) && checkPrVis(obj))
obj2.focus();
alert(caption1 + "的起始值不能大于其终止值!");
return false;
}
return true;
}
/****************************************************************************************
*根据日期格式,将字符串转换成Date对象。 *
*格式:yyyy-年,MM-月,dd-日,HH-时,mm-分,ss-秒。 *
*(格式必须写全,例如:yy-M-d,是不允许的,否则返回null;格式与实际数据不符也返回null。)*
*默认格式:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd。 *
****************************************************************************************/
代码为:
function getDateByFormat(str){
var dateReg,format;
var y,M,d,H,m,s,yi,Mi,di,Hi,mi,si;
if((arguments[1] + "") == "undefined") format = "yyyy-MM-dd HH:mm:ss";
else format = arguments[1];
yi = format.indexOf("yyyy");
Mi = format.indexOf("MM");
di = format.indexOf("dd");
Hi = format.indexOf("HH");
mi = format.indexOf("mm");
si = format.indexOf("ss");
if(yi == -1 || Mi == -1 || di == -1) return null;
else{
y = parseInt(str.substring(yi, yi+4));
M = parseInt(str.substring(Mi, Mi+2));
d = parseInt(str.substring(di, di+2));
}
if(isNaN(y) || isNaN(M) || isNaN(d)) return null;
if(Hi == -1 || mi == -1 || si == -1) return new Date(y, M-1, d);
else{
H = str.substring(Hi, Hi+4);
m = str.substring(mi, mi+2);
s = str.substring(si, si+2);
}
if(isNaN(parseInt(y)) || isNaN(parseInt(M)) || isNaN(parseInt(d))) return new Date(y, M-1, d);
else return new Date(y, M-1, d,H, m, s);
}
/*****************************
*LTrim(string):去除左边的空格*
*****************************/
代码为:
function LTrim(str){
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(0)) != -1){
var j=0, i = s.length;
while (j < i && whitespace.indexOf(s.charAt(j)) != -1){
j++;
}
s = s.substring(j, i);
}
return s;
}
/*****************************
*RTrim(string):去除右边的空格*
*****************************/
代码为:
function RTrim(str){
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(s.length-1)) != -1){
var i = s.length - 1;
while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1){
i--;
}
s = s.substring(0, i+1);
}
return s;
}
/**********************************
*Trim(string):去除字符串两边的空格*
**********************************/
代码为:为:
function Trim(str){
return RTrim(LTrim(str));
}
相关推荐
JavaScript 数据校验 用户登录 示例代码JavaScript 数据校验 用户登录 示例代码JavaScript 数据校验 用户登录 示例代码JavaScript 数据校验 用户登录 示例代码JavaScript 数据校验 用户登录 示例代码JavaScript 数据...
JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码...
在网页开发中,JavaScript校验设计扮演着至关重要的角色,它能够确保用户输入的数据符合预设的格式和规则,减少服务器端的压力,提高用户体验。本文将深入探讨JavaScript中的数据验证设计与数据获取。 一、...
javaScript通用数据类型校验,邮件,字符串程度,数字验证
本文将深入探讨“javascript校验大全”所涵盖的验证技术,包括表单验证、数据类型验证以及特殊格式验证,如邮箱、身份证号等。 1. **表单验证**:在网页交互中,表单是最常见的用户输入接口。JavaScript可以实时...
JavaScript是一种广泛用于网页和网络应用的编程语言,其在处理用户输入时,数据校验扮演着至关重要的角色。正则表达式(Regular Expression)是进行字符串匹配和操作的强大工具,常用于数据验证。本文将深入探讨如何...
综上所述,"页面特效JavaScript校验等"涵盖的内容广泛,不仅涉及到提升网页视觉效果的技术,还涉及到确保用户输入数据有效性的策略。通过深入学习和实践,开发者可以创建出更加交互性好、用户体验优良的网页应用。
这个“常用js大全,javascript校验大全”集合了多种常见的验证功能,确保用户输入的数据格式正确,从而提高用户体验和系统安全性。以下是一些主要的知识点: 1. **数字验证**:用于检查字符串是否全由数字组成,这...
通过学习和理解这些JavaScript校验代码,开发者可以构建更健壮、更安全的应用程序,减少错误并提供更好的用户体验。同时,了解和掌握这些技术也有助于提升编程能力,适应不断变化的Web开发需求。
在这个名为“javascript校验集合”的资源中,你将找到一系列针对不同类型数据的验证函数,如邮箱、身份证、数字和字母等。这些验证规则可以帮助你构建更健壮的前端应用程序。 首先,我们来看电子邮件验证。在互联网...
"javascript常用数据校验正则表达式"这个主题涉及到的是在前端开发中如何使用正则来验证用户输入的数据,确保其格式正确性。下面将详细讨论JavaScript中正则表达式的常见用法以及`validate.js`这个文件可能包含的...
本文将深入探讨一个关键的技术点:如何利用JavaScript实现输入数据的实时校验函数,以提升应用程序的用户体验和数据质量。 JavaScript是一种广泛应用于Web前端的脚本语言,它允许开发者在用户与网页交互时执行代码...
本篇文章将深入探讨JavaScript校验正则表达式的方法和实例。 一、基础概念 1. 正则表达式模式:模式是描述一组字符串的规则,例如`/\d+/`表示匹配一个或多个数字。 2. 标志(flags):用于改变正则表达式的匹配...
JavaScript数据验证是前端开发中一个重要的技术环节,主要用于确保用户在网页表单中输入的数据符合预设的规则,从而提高数据质量,减少服务器端的处理压力,并为用户提供更好的交互体验。这款纯JavaScript编写的验证...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端数据传输。在前端开发中,正确解析和校验JSON格式至关重要,因为任何格式错误都可能导致程序崩溃或逻辑错误。本文将详细介绍一个...
标签“javascript校验”和“js校验”强调了EasyValidator的核心功能,即JavaScript环境下的数据验证。而“EasyValidator”标签则是框架的名称,代表了这一特定的解决方案。 在压缩包文件“validate”中,很可能包含...
#### JavaScript校验 虽然HTML提供了基本的校验功能,但更复杂的校验逻辑通常需要JavaScript来实现。在代码中,可以看到`onSubmit`事件处理器调用了`Validator.Validate`函数,这表明存在一个名为Validator的...
这个"js javaScript 验证校验小工具包"显然是一个集合了各种JavaScript验证和校验功能的资源库,旨在帮助开发者更方便地处理表单验证、数据格式检查等常见任务。 在前端开发中,验证和校验通常涉及以下几个方面: ...