日期:2014-05-16  浏览次数:20428 次

javascript实现常用的表单前台数据的校验


//一个工具的类,用来校验表单中一些常用的表单元素
var errMsg = {
/*
requied:{
//校验必填字段
msg: "this filed is required!",
test: function(obj,load){
return obj.value.length>0||load||object.value==object.defaultValue;

}
}, */
username:{
msg:"Not a valid username,it must be larger 5!",
test:function(obj){
return obj.value.length>5;
}
},
password:{
msg:"Not a valid password!Must be larger 5",
test:function(obj){
return obj.value.length>5;
}
},
email:{
msg:"Not a valid emial address!",
//校验电子邮件的格式
test:function(obj){
return !obj.value||/^[z-z0-9A-Z_+.-]+\@([a-z0-9-]+\.)+[a-z0=9]{2-4}$/i.test(obj.value);
}
},

//确保字段内容符合MM/DD/YYYY的格式
date:{
msg:"Not a valid date!",
test:function(obj){
return !obj.value||/^\d{2}\/\d{2}\/\d{2,4}$/.test(obj.value);
}
},

//确保字段内容是电话号码并将其自动格式化
phone:{
msg:"Not a valid phone number!",
test:function(obj){
//判断是否符合电话号码的要求
var m = /(\d{3}).*(\d{3}).*(\d{4})/.exec(obj.value);
//检查是否符合自己约定的格式 (123) 456-7890
if(m) {
obj.value="("+m[1]+")"+m[2]+"-"+m[3];
return !obj.value||m;
}
}
},


//确保字段内容是一个正确的URL
url: {
msg:"Not a valid URL!",
test:function(obj){
//确保有文本输入,而且不是默认的http://文本
/^https?:\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/.test(obj.value);
}
}

};
/**
* @param form - 表单元素的一个引用
* @param load - 是一个bool值,确定是否在页面加载时执行还是动态执行
*/
function validateForm(form,load){
var valid = true;
// alert(form.elements[0]);

// for(var i = 0;i<form.elements.length;i++){
// alert(form.elements[i].id+"-"+form.elements[i].className);
// }
for(var i = 0;i<form.elements.length;i++){

//先隐藏任何错误信息
hideErrors(form.elements[i]);
//检查字段是否包含正确的内容
alert(form.elements[i].id+"-"+form.elements[i].className);
if(!validateField(form.elements[i],load))
{
valid = false;
alert(valid);

}
}
//如果字段是不正确的内容返回false,否则返回true
return valid;
}

/**
  * 验证单个表单字段的内容
  */
function validateField(element,load){
//定义个数组用来存储错误信息
var errors = [];
//遍历所有可能的验证技术
var name = element.id;
alert(name);

//去掉前后的空格
//检查元素是否带有该class并把它传给验证函数
//var re = new RegExp("(^|\\s")+name+"(\\s|$)";
//if(re.test(element.className)&&!errMsg[name].test(element))
if(!errMsg[name].test(element))
{
//没有验证通过就把错误消息加入数组中
errors.push(errMsg[name].msg);
}
//有错误消息就显示
if(errors.length){
showErrors(element,errors);
}
else{
hideErrors(element);
}
//如果字段到最后没有得到验证就返货false
return  errors.length>0;


}


完整的例子可以参考下面的附件