<script type="text/javascript" language="javascript">
isDataTime = function (e,obj) {
try{
var key;
if ((document.all) ? true:false)
{
key = event.keyCode;
}
else
{
key = e.which;
}
{
var otext = obj.value; //已有的值
var keytext = String.fromCharCode(key); //当前输入的值
//begin
if(otext.length == 3) //年
{
var val = otext + keytext;
var t = parseInt(val);
if(t >= 2050)
obj.value = " " + otext + "年" + keytext;
else
obj.value = otext + keytext + "年";
return false;
}
else if(otext.length == 5) //月的第一位
{
var val = keytext;
var t = parseInt(val);
if(t > 1)
{
obj.value = otext.substring(0,5) + "0" + keytext + "月";
return false;
}
}
else if(otext.length == 6) //月的第二位
{
var val = otext.substring(5,6) + keytext;
var t = parseInt(val);
if(t > 12)
obj.value = otext.substring(0,5) + "0" + otext.substring(5,6) + "月" + keytext;
else
obj.value = otext + keytext + "月";
return false;
}
else if(otext.length == 8) //日的第一位
{
var val = keytext;
var t = parseInt(val);
if(t > 3)
{
obj.value = otext.substring(0,8) + "0" + keytext + "日 ";
return false;
}
}
else if(otext.length == 9)//日的第二位
{
var val = otext.substring(8,9) + keytext;
var t = parseInt(val);
if(t > 31)
obj.value = otext.substring(0,8) + "0" + otext.substring(8,9) + "日 " + keytext;
else
obj.value = otext + keytext + "日 ";
return false;
}
else if(otext.length == 12) //时的第一位
{
var val = keytext;
var t = parseInt(val);
if(t > 2)
{
obj.value = otext.substring(0,12) + "0" + keytext + "时";
return false;
}
}
else if(otext.length == 13)//时的第二位
{
var val = otext.substring(12,13) + keytext;
var t = parseInt(val);
if(t >= 24)
obj.value = otext.substring(0,12) + "0" + otext.substring(12,13) + "时" + keytext;
else
obj.value = otext + keytext + "时";
return false;
}
else if(otext.length == 15) //分的第一位
{
var val = keytext;
var t = parseInt(val);
if(t > 5)
{
obj.value = otext.substring(0,15) + "0" + keytext + "分";
return false;
}
}
else if(otext.length == 16)//分
{
var val = otext.substring(15,16) + keytext;
var t = parseInt(val);
if(t > 59)
obj.value = otext.substring(0,15) + "0" + keytext + "分";
else
obj.value = otext + keytext + "分";
return false;
}
else if (otext.length > 17)
return false;
else
{
return true;
}
//end
}
else if(key == 8)
{
return true;
}
else
{
return false;
}
}
catch(e)
{
alert(e);
}
}
</script>
<input style="width:160px;" onkeypress="javascript:return isDataTime(event,this);" />
isDataTime = function (e,obj) {
try{
var key;
if ((document.all) ? true:false)
{
key = event.keyCode;
}
else
{
key = e.which;
}
if ( (key > 47) && (key < 58) )
{
var otext = obj.value; //已有的值
var keytext = String.fromCharCode(key); //当前输入的值
//begin
if(otext.length == 3) //年
{
var val = otext + keytext;
var t = parseInt(val);
if(t >= 2050)
obj.value = " " + otext + "年" + keytext;
else
obj.value = otext + keytext + "年";
return false;
}
else if(otext.length == 5) //月的第一位
{
var val = keytext;
var t = parseInt(val);
if(t > 1)
{
obj.value = otext.substring(0,5) + "0" + keytext + "月";
return false;
}
}
else if(otext.length == 6) //月的第二位
{
var val = otext.substring(5,6) + keytext;
var t = parseInt(val);
if(t > 12)
obj.value = otext.substring(0,5) + "0" + otext.substring(5,6) + "月" + keytext;
else
obj.value = otext + keytext + "月";
return false;
}
else if(otext.length == 8) //日的第一位
{
var val = keytext;
var t = parseInt(val);
if(t > 3)
{
obj.value = otext.substring(0,8) + "0" + keytext + "日 ";
return false;
}
}
else if(otext.length == 9)//日的第二位
{
var val = otext.substring(8,9) + keytext;
var t = parseInt(val);
if(t > 31)
obj.value = otext.substring(0,8) + "0" + otext.substring(8,9) + "日 " + keytext;
else
obj.value = otext + keytext + "日 ";
return false;
}
else if(otext.length == 12) //时的第一位
{
var val = keytext;
var t = parseInt(val);
if(t > 2)
{
obj.value = otext.substring(0,12) + "0" + keytext + "时";
return false;
}
}
else if(otext.length == 13)//时的第二位
{
var val = otext.substring(12,13) + keytext;
var t = parseInt(val);
if(t >= 24)
obj.value = otext.substring(0,12) + "0" + otext.substring(12,13) + "时" + keytext;
else
obj.value = otext + keytext + "时";
return false;
}
else if(otext.length == 15) //分的第一位
{
var val = keytext;
var t = parseInt(val);
if(t > 5)
{
obj.value = otext.substring(0,15) + "0" + keytext + "分";
return false;
}
}
else if(otext.length == 16)//分
{
var val = otext.substring(15,16) + keytext;
var t = parseInt(val);
if(t > 59)
obj.value = otext.substring(0,15) + "0" + keytext + "分";
else
obj.value = otext + keytext + "分";
return false;
}
else if (otext.length > 17)
return false;
else
{
return true;
}
//end
}
else if(key == 8)
{
return true;
}
else
{
return false;
}
}
catch(e)
{
alert(e);
}
}
</script>
<input style="width:160px;" onkeypress="javascript:return isDataTime(event,this);" />
测试环境:IE 8, Firefox 3.5.2