输入检查文件:commonForManage.jsfunction 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;
}     }

解决方案 »

  1.   

    日历文件:calendar.htm<html>
    <head>
    <title>日历</title>
    <style>
    TD{

    font-size:9pt; }
    </style>
    </head><body><table align=center><tr><td width=80%>
    <script language=javascript>
    document.write("<select name=yearInput onchange='showCalendar()'>");
    for (var i=1930;i<2200;i++) document.write("<option value='"+i+"'>"+i+"</option>");
    document.write("</select>年<select name=monthInput onchange='showCalendar()'>");
    for (var i=1;i<13;i++) document.write("<option value='"+i+"'>"+i+"</option>");
    document.write("</select>月");
    document.write("</td><td align=right><input type=button value=今天 onclick='returnToday();'>");
    </script>
    </td></tr></table>
    <div id="theCalendar" align=center width=100% >
    </div>
    </body>
    </html><script language="javascript">
    function showCalendar() //日历显示
    {
    var theCalendarContent="";
    var b=new Date(yearInput.value+"\/"+monthInput.value+"\/"+1);
    var c=new Date(yearInput.value+"\/"+(monthInput.value*1+1)+"\/"+0);
    var theMonthDays=c.getDate();
    var i=0;
    var j=b.getDay();
    var k=1;
    theCalendarContent+="<table ondblclick='getTD(event.srcElement)' border=1 style='border: solid 1 #5661a8; font-Size: 9pt; font-family: Arial; background: #e0e3f7' width=100% align=center><tr bordercolorlight='#5661a8' bordercolordark='#5661a8' style='background: #5661a8; color: #ffffff'><td >周日</td><td>周一</td><td>周二</td><td>周三</td><td>周四</td><td>周五</td><td>周六</td></tr><tr>";
    for (j=0;j<b.getDay();j++) theCalendarContent+="<td>&nbsp;</td>";
    for (i=0;(i<6)&&(k<theMonthDays+1);i++)
    {
    for (j;j<7;j++)
    {
    if (k<theMonthDays+1) 

    if (j<6&&j>0) theCalendarContent+="<td bordercolorlight='#5661a8' align='center' style='color:#ff0000'>"+(k++)+"</td>";
    else theCalendarContent+="<td bordercolorlight='#5661a8' align='center'>"+(k++)+"</td>";
    }
    else  theCalendarContent+="<td>&nbsp;</td>";
    }
    theCalendarContent+="</tr><tr >";
    j=0;
    }
    theCalendarContent+="</tr></table>";
    theCalendar.innerHTML=theCalendarContent;
    }

    function getTD(obj) //返回选中日期
    {
    if (obj.tagName!="TD") return false;
    if (isNaN(obj.innerText)||(obj.innerText==0)) return false;
    var a=yearInput.value+"-"+monthInput.value+"-"+obj.innerText;
    window.returnValue=a;
    window.close();
    }

    function returnToday() //返回本日
    {
    var todaydate=new Date();
    var a=todaydate.getFullYear()+"-"+(todaydate.getMonth()+1)+"-"+todaydate.getDate();
    window.returnValue=a;
    window.close();
    } function initCalendar() //初始化日历
    {
    var a=window.dialogArguments;
    var b=new Date();
    if ((a!=null)&&(a.length>4)) b=new Date(a);
    if (isNaN(b)) b=new Date();
    yearInput.value=b.getFullYear();
    monthInput.value=(b.getMonth()+1);
    showCalendar();
    }
    initCalendar();

    </script>
      

  2.   

    goldenlove(潇洒.net):
    本来是想散代码,可是怕自个写得不好,所以只能说"献芹".
    JK在写代码的时候,所追求的除了功能上的添加,就是代码的简洁。
    JK自以为垃圾code还不算多。比如日期弹出框(第三个文件),JK所见的很少有代码少过一百五十行的(尽管用行来衡量有失偏颇)第二个文是用来检查纠正手工输入和其它一些功能的。在网页里面一般用得到。
    比如checkNecessary(obj);为了达到更简洁的目的,欢迎交流
    无论是细节的,还是结构上,还是效率上的改进意见,JK都乐意倾听呵