不验证日期的准确性的话,简单的实现可以这样 function auto(obj){ var arr = obj.value.split("-"); if(arr.length==2){ var now = new Date(); var year = now.getFullYear(); obj.value = year + "-" + (arr[0].length==1?"0"+arr[0] : arr[0]) + "-" + (arr[1].length==1?"0"+arr[1] : arr[1]); }else{ obj.value = arr[0] + "-" + (arr[1].length==1?"0"+arr[1] : arr[1]) + "-" + (arr[2].length==1?"0"+arr[2] : arr[2]); } } <input type="text" onblur="auto(this)">
<script> function doit(obj){ var v = obj.value; var re = new RegExp("^(\\d|0\\d|1[0-2])-(\\d|[1-2]\\d|3[0-1])$"); if(!re.test(v)) {alert("日期不对");return false;} v = (new Date()).getFullYear() + "-" + v; a = v.split("-"); y = parseInt(a[0]); m = parseInt(a[1]); d = parseInt(a[2]); s = y + "-" + m + "-" + d; dt = new Date(y,m-1,d); y = dt.getFullYear(); m = dt.getMonth()+1; d = dt.getDate(); if(y + "-" + m + "-" + d != s){alert("日期不对");return false;} m = "0" + m; m = m.substr(m.length-2,2); d = "0" + d; d = d.substr(d.length-2,2); obj.value = y + "-" + m + "-" + d; } </script> <input type="text" onchange="doit(this)" value="7-">
fengylm
(CHINA*范) 等 级: 结帖率:100.90% 楼主的结贴率都超过了100%, 太神奇了
顶楼上的,CSDN出问题了,还有超过百分百的事啊,
下面是一个小示例, 没有对输入的日期的合法性进行效验,比如, 当输入 2-31 或 01-39 或 13-35 之类的都会进行转换<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>无标题页</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script language="jscript" type="text/jscript"> function autoCorrect(){ var date = document.getElementById("date").value; if(new RegExp("^[0-1]?\\d-[0-3]?\\d$").test(date)){ document.getElementById("date").value = new Date().getYear() + "-" + date; } } </script> </head> <body> <input id="date" type="text" onblur="autoCorrect();" /> </body> </html>
var arr = obj.value.split("-");
if(arr.length==2){
var now = new Date();
var year = now.getFullYear();
obj.value = year + "-" + (arr[0].length==1?"0"+arr[0] : arr[0]) + "-" + (arr[1].length==1?"0"+arr[1] : arr[1]);
}else{
obj.value = arr[0] + "-" + (arr[1].length==1?"0"+arr[1] : arr[1]) + "-" + (arr[2].length==1?"0"+arr[2] : arr[2]);
}
} <input type="text" onblur="auto(this)">
<script>
function doit(obj){
var v = obj.value;
var re = new RegExp("^(\\d|0\\d|1[0-2])-(\\d|[1-2]\\d|3[0-1])$");
if(!re.test(v)) {alert("日期不对");return false;}
v = (new Date()).getFullYear() + "-" + v;
a = v.split("-");
y = parseInt(a[0]);
m = parseInt(a[1]);
d = parseInt(a[2]);
s = y + "-" + m + "-" + d;
dt = new Date(y,m-1,d);
y = dt.getFullYear();
m = dt.getMonth()+1;
d = dt.getDate();
if(y + "-" + m + "-" + d != s){alert("日期不对");return false;}
m = "0" + m;
m = m.substr(m.length-2,2);
d = "0" + d;
d = d.substr(d.length-2,2);
obj.value = y + "-" + m + "-" + d;
}
</script>
<input type="text" onchange="doit(this)" value="7-">
fengylm
(CHINA*范) 等 级:
结帖率:100.90%
楼主的结贴率都超过了100%,
太神奇了
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题页</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script language="jscript" type="text/jscript">
function autoCorrect(){
var date = document.getElementById("date").value;
if(new RegExp("^[0-1]?\\d-[0-3]?\\d$").test(date)){
document.getElementById("date").value = new Date().getYear() + "-" + date;
}
}
</script>
</head>
<body>
<input id="date" type="text" onblur="autoCorrect();" />
</body>
</html>