无聊
今天突然知道接下来几周有学位的培训课上,一下子接受不了,好久都没有上过课了...
把这几天慢慢磨出来的表单验证程序给贴出来,希望大家跟我一起研究...
1.在要使用表单验证的页面里:
<script src="表单验证.js" type="text/javascript"></script>
2.在表单里需要验证的控件里添加属性:
例如:
<form id="Grade">
<input type="text" name="Test" errMsg=" 请填写正确格式的帐号" patrn="^\d{10}$" msg=" 请输入帐号"/>
</form>
3.在body区里建一个表单验证的实例:
always_there=new validFrm("Grade",30);
//"Grade"为表单的ID
//30为提示信息与表单控件之间的距离
以下是表单验证.js的内容,注意此表单验证程序某些地方并不是通用的,大家可以自己修改:
//表单验证程序
//always_there
//2007-12-10
//获取触发事件源的坐标
function getAbsolutePos(e1)
{
var _p={x:0,y:0};
do
{
_p.x+=e1.offsetLeft;
_p.y+=e1.offsetTop;
}while(e1=e1.offsetParent)
return _p;
}
//表单验证程序
function validFrm(frmId,distance)
{
//初始化
this.distance=distance;
this.frm=document.forms[frmId];
//表单提交验证
this.frm.onsubmit=function() {
for(var j=0;this.elements.all(j);j++)
{
if(this.elements.all(j).validating==false)
return false;
}
return true;
};
for(var i=0;this.frm.elements.all(i);i++)
{
//如果需要验证
if(this.frm.elements.all(i).msg)
{
//创建提示区域
this.frm.elements.all(i).tip=new odiv(this.frm.elements.all(i),this.distance);
this.frm.elements.all(i).validating=false;
//注册事件
this.frm.elements.all(i).onfocus=function()
{
this.tip.div.hide();
}
this.frm.elements.all(i).onblur=function()
{
if(this.value=="") //-表单控件为空时
{
this.validating=false;
this.tip.div.show(this.msg);
return;
}
var re=new RegExp(this.patrn);
if(!re.test(this.value))
{
this.validating=false;
this.tip.div.show(this.errMsg);
}
else
{
this.validating=true;
this.tip.div.hide();
}
};
}
}
}
//创建提示信息对象
function odiv(obj,distance)
{
this.div=document.createElement("div")
this.div.className="errShow";
this.div.style.position="absolute";
this.div.style.left=getAbsolutePos(obj).x+obj.offsetWidth+distance+"px";
this.div.style.top=getAbsolutePos(obj).y+"px";
document.body.appendChild(this.div);
this.div.show=function(msg)
{
this.innerHTML="<img src='/images/check_error1.gif' />"+msg;
this.style.display="";
};
this.div.hide=function()
{
this.style.display="none";
};
}