function checkNecessaryInput(obj) //用于检查一个表单内所有必须输入的栏位是否输入完整
{
var s="";
var i;
var j=0;
for (i=0 ;(i<obj.elements.length)&&(j<10);i++)
{
if (( obj.elements[i].alt != null ) && (obj.elements[i].alt.length>0) && (obj.elements[i].value!=null) && (obj.elements[i].value.length==0) )
{
s+="\n"+obj.elements[i].alt; //遍历所有输入,如果必须输入且没有输入值,就将其内容加到警告信息中去
j=j+1;
}
}
if (j > 0 )
{
alert ("以下资料必须输入"+s);
return false;
}
return true;
}
function checkDecimalInput(obj,min,max) //作用是将输入变成Number(10,6)格式,默认范围是非负。
{
obj.value=obj.value.replace(/ /g,""); //去空格
if (obj.value=="") return false;
if (obj.value.substr(0,1)==".") obj.value="0"+obj.value;
if (obj.value.substr(0,2)=="-.") obj.value=obj.value.replace("-.","-0.");
var r, re;
var s = obj.value ;
var theMin=-0.0000001;
var theMax=10000000000;
if (min!=null) theMin=min;
if (max!=null) theMax=max;
if (s.length==0) return false;
re = /-{0,1}\d{1,10}\.{0,1}\d{0,6}/i;
r = s.match(re); //取数
if (r==null)
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的数值不正确,我们已进行了清除。");
obj.focus();
return false;
}
if ((r>=theMax)||(r<=theMin))
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的数值超出允许范围,我们已进行了清除。");
obj.focus();
return false;
}
if ( r!=s)
{
obj.value=r;
alert("!!!!请注意:\n您刚才输入的数值不正确,我们已进行了修改。");
obj.select();
obj.focus();
return false;
}
obj.value=r;
}
function checkIntInput(obj,min,max) //作用是将输入变成整数,默认范围是非负。onblur event
{
obj.value=obj.value.replace(/ /g,""); //去空格
if(obj.value=="") return false;
var r;
var s = obj.value ;
var theMin=-1;
var theMax=10000000000;
if (min!=null) theMin=min;
if (max!=null) theMax=max;
if (s.length==0) return false;
r = parseInt(s);; //取数
if (r==null||isNaN(r))
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的整数不正确,我们已进行了清除。");
obj.focus();
return false;
}
if ((r>=theMax)||(r<=theMin))
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的整数超出允许范围,我们已进行了清除。");
obj.focus();
return false;
}
if ( r!=s)
{
obj.value=r;
alert("!!!!请注意:\n您刚才输入的整数不正确,我们已进行了修改。");
obj.select();
obj.focus();
return false;
}
obj.value=r;
}
function checkDateInput(obj) //用于检查日期输入是否正确 (日期输入范围为1930-01-01 到2200-12-31)
{
if (obj.value.length==0) return false;
var objValue=obj.value.replace(/[-\.]/g,"/");
try
{
var a=new Date(objValue);
if (isNaN(a))
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");
obj.focus();
return false;
}
var b;
if (a.getFullYear()<1900||a.getFullYear()>2200)
{var Today=new Date();
b=Today.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();
}
else if (a.getFullYear()<1930)
b=(a.getFullYear()+100)+"-"+(a.getMonth()+1)+"-"+a.getDate();
else b=a.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();
obj.value=obj.value.replace(/[-\.\/]0*/g,"-");
if (b!=obj.value)
{
obj.value=b;
alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进行了修改。");
obj.select();
obj.focus();
return false;
}
}
catch(Exception)
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");
obj.focus();
return false;
}
return true;
}
function getDateFromDialog(obj) //利用弹出输入日期
{
checkDateInput(obj);
var a=showModalDialog("calendar.htm",obj.value.replace(/[-\.]/g,"\/"),"status:no;resizable:no;help:no;dialogHeight:220px;dialogWidth:319px;DialogLeft:"+event.screenX+";DialogTop:"+event.screenY);
if (a!=null) obj.value=a;
}
function checkNoInput(obj) //用于检查编号输入是否正确。编号由字母、
{
if (obj.value.length==0) return false;
var objValue=obj.value.replace(/ /g,"/");
var a=/[\w-\.]{1,30}/i;
var b=objValue.match(a);
if (b==null)
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的编号不正确,我们已进行了清除。");
obj.focus();
return false;
}
if ( b!=objValue )
{
obj.value=b;
alert("!!!!请注意:\n您刚才输入的编号不正确,我们已进行了修改。");
obj.select();
obj.focus();
return false;
}
}
function checkMonthInput(obj) //JK 20020815 用于检查纠正yyyymm形式的月份输入
{
obj.value=obj.value.replace(/ /g,"");
if (obj.value.length==0) return false;
var a=/((19)|(20))\d\d[0,1]{0,1}\d/i;
var b;
var c;
if (!(a.test(obj.value)))
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的月份不正确,我们已进行了清除。");
obj.focus();
return false;
}
else
{
b=obj.value.match(a)[0];
b=b.substring(0,4)+"/"+b.substring(4,6)+"/1";
c=new Date(b);
b=c.getFullYear()+""+(c.getMonth()+1);
if (b.length<6)
b=c.getFullYear()+"0"+(c.getMonth()+1);
if (b!=obj.value)
{
obj.value=b;
alert("!!!!请注意:\n您刚才输入的月份不正确,我们已进行了修改。");
return false;
}
}
}
function resetProcess(obj) //JK 20020619 用于将指定obj内的所有text-input与select的值清空
{
var a;
if (obj==null) a=document.all("theQueryConditionTable");
else a=obj;
if (a==null) return false;
var b=a.getElementsByTagName("INPUT");
for (var i=0;i<b.length;i++)
{
if (b[i].type=="text") b[i].value="";
}
b=a.getElementsByTagName("SELECT");
for (var i=0;i<b.length;i++)
{
b[i].options[0].selected=true;
}
}
function roundFun(numberRound,roundDigit) //四舍五入,保留位数为roundDigit ,供计算时用
{
if (numberRound>=0)
{
var tempNumber = parseInt((numberRound * Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit);
return tempNumber;
}
else
{
numberRound1=-numberRound
var tempNumber = parseInt((numberRound1 * Math.pow(10,roundDigit)+0.5))/Math.pow(10,roundDigit);
return -tempNumber;
}
}
把上面的保存为文件commonForManage.js
<HTML><HEAD><TITLE>JK的普通输入验证示例</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="Microsoft FrontPage 5.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<STYLE>TD {
FONT-SIZE: 12px
}
</STYLE>
<SCRIPT language=Javascript src="commonForManage.js"></SCRIPT>
</HEAD>
<BODY style="FONT-SIZE: 12px">
<TABLE align=center
style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 12px; WIDTH: 90%">
<FORM method=post name=frm onsubmit="return checkNecessaryInput(this);">
<TBODY>
<TR>
<TD>数值1<FONT color=red>*</FONT><INPUT alt=数值1 name=a
onblur=checkDecimalInput(this) size="20"></TD>
<TD>数值2:<INPUT name=b onblur=checkDecimalInput(this,-1,1) size="20">(大于-1,小于1)</TD>
<TD>数值3:<INPUT name=b
onblur=checkDecimalInput(this,-0.0000001,1.0000001) size="20">(大于或等于0,小于蔌等于1)</TD></TR>
<TR>
<TD>整数1<FONT color=red>*</FONT><INPUT alt=整数1 name=a
onblur=checkIntInput(this) size="20"></TD>
<TD>整数2:<INPUT name=b
onblur=checkIntInput(this,-100,100) size="20">(大于-100,小于100)</TD>
<TD>整数3:<FONT size=-3><INPUT name=b
onblur=checkIntInput(this,-0.0000001,100.0000001) size="20"></FONT>(大于或等于0,小于或等于0)</TD></TR>
<TR>
<TD>日期1<FONT color=red>*</FONT><INPUT alt=日期1 name=a
onblur=checkDateInput(this) ondblclick=getDateFromDialog(this); size="20"></TD>
<TD>日期2:<INPUT name=b onblur=checkDateInput(this)
ondblclick=getDateFromDialog(this); size="20"></TD>
<TD>注:双击输入框可以弹出日历</TD></TR>
<TR>
<TD>编号1<FONT color=red>*</FONT><INPUT alt=编号1 name=a
onblur=checkNoInput(this) size="20"></TD>
<TD>编号2:<INPUT name=b onblur=checkNoInput(this) size="20"></TD>
<TD>注:编号里只能有<FONT color=blue>数字</FONT>、<FONT color=blue>字母</FONT>、<FONT
color=blue>-</FONT>、<FONT color=blue>_</FONT>、<FONT
color=blue>.</FONT></TD></TR>
<TR>
<TD>输入1<FONT color=red>*</FONT><INPUT alt=输入1 name=a size="20"></TD>
<TD>输入2:<INPUT name=b value=2 size="20"></TD>
<TD>不限制输入内容</TD></TR>
<TR>
<TD>选择1<FONT color=red>*</FONT><SELECT name=c alt="选择1"> <OPTION
selected value="">请选择</OPTION> <OPTION value=1>一</OPTION> <OPTION
value=2>二</OPTION> <OPTION value=3>三</OPTION> <OPTION value=4>四</OPTION>
<OPTION value=5>五</OPTION></SELECT></TD>
<TD>选择2:<SELECT name=d> <OPTION selected value="">请选择</OPTION> <OPTION
value=1>一</OPTION> <OPTION value=2>二</OPTION> <OPTION value=3>三</OPTION>
<OPTION value=4>四</OPTION> <OPTION value=5>五</OPTION></SELECT></TD>
<TD> </TD></TR>
<TR>
<TD>复选<INPUT name=e type=checkbox value=5><INPUT name=e type=checkbox
value=2><INPUT name=e type=checkbox value=3></TD>
<TD>单选<INPUT name=f type=radio value=1><INPUT name=f type=radio
value=2><INPUT CHECKED name=f type=radio value=3></TD>
<TD> </TD></TR>
<TR>
<TD colSpan=3><INPUT onclick="javascript:if (checkNecessaryInput(frm)) frm.submit();" type=button value=确定>
<INPUT onclick=javascript:resetProcess(frm); type=button value=清空> </TD></TR>
<TR>
<TD colSpan=3><PRE>说明:
1.由于当输入错误时,blur事件检查到有错误时使用了focus方法,故所有的输入框的预
设值(包括所有的非手工输入的值)必须正确,否则有可能发生抢焦点的死循环
2.必须输入的验证使用了遍历,请反对遍历的朋友包涵
</PRE></TD></TR>
<TR>
<TD align=right colSpan=3 width="100%"><A
href="http://fason.nease.net/">【阿信的小天地】</A></TD></TR></FORM></TBODY></TABLE></BODY></HTML>
