http://community.csdn.net/Expert/topic/3394/3394495.xml?temp=.7223017<html> <head> <title>无标题文档</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <script language="javascript"> function keydown(src){ var e=window.event; var code=e.keyCode; var cursorPos=getPos(src); if(code==8){ //退格 if(cursorPos==5 || cursorPos==8|| cursorPos==11 || cursorPos==14){ movenext(src,cursorPos,-1); cursorPos-=1; }else movenext(src,cursorPos,0); //alert(); var range=setSelect(src,cursorPos-1); range.text="0"; movenext(src,cursorPos,-1); e.returnValue=false; //src.focus(); return false; }else if(code==46) e.returnValue=false; } function keypress(src){ var e=window.event; var code=e.keyCode; var cursorPos=getPos(src); if(!keyPressInt()) return false; if(cursorPos==4 || cursorPos==7|| cursorPos==10 || cursorPos==13){ movenext(src,cursorPos,1); cursorPos += 1; } var num = String.fromCharCode(code); //alert(num); if(checkInput(src,num,cursorPos)){ var range=setSelect(src,cursorPos); range.text=num; if(cursorPos==3 || cursorPos==6|| cursorPos==9 || cursorPos==12) movenext(src,cursorPos,2); else movenext(src,cursorPos,1); } e.returnValue=false; return false; } function checkInput(src,num,pos){ var val=src.value; var year=parseInt(val.substring(0,4),10); var month=parseInt(val.substring(5,7),10); switch(pos){ case 0: if(num!=1 && num!=2) return false; break; case 5: var char6=val.charAt(6); if(num>1 || num==1 && char6>2) return false;break; case 6: if(val.charAt(5)=="1" && num>2 || val.charAt(5)=="0" && num==0) return false;break; case 8: var char9=val.charAt(9); switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(num>3 || num==3&&char9>1) return false;break; case 4: case 6: case 9: case 11: if(num>3 || num==3&&char9>0) return false;break; case 2: if(num>2) return false;break; }break; case 9: var char8=val.charAt(8); switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(char8==0 && num==0 || char8==3 && num>1) return false;break; case 4: case 6: case 9: case 11: if(char8==0 && num==0 || char8==3 && num!=0) return false;break; case 2: if(char8==0 && num==0) return false; else if(char8==2 && !(year%4==0 && year %400==0) && num>8) return false; }break; case 11: if(num>2||num==2&&val.charAt(12)>3) return false;break; case 12: if(parseInt(val.charAt(11)+num)>23) return false;break; case 14: if(num>5) return false;break; }
return true; } function setSelect(src,pos){ var range = src.createTextRange(); range.moveStart('character',pos); range.moveEnd('character',pos-src.value.length+1); range.select(); return range; } function getPos(obj){ var ml=obj.value.length; var pos=0; var rng=document.selection.createRange(); rng.moveEnd("character",ml); try{ pos=ml-rng.text.length }catch(e){} return pos; } function movenext(src,pos,flag) { var range =src.createTextRange(); range.moveStart("character",pos+flag); range.collapse(true); range.select(); } function keyPressInt(){ var e=window.event; code=e.keyCode; if(code >=48 && code <=57) return true; else {window.event.returnValue=false;return false;} } function checkPaste(){ window.event.returnValue=false; } </script> </head><body> <p align=center> <input name="dateinput" value="0000-00-00 00:00" onkeydown="keydown(this)" size="16" maxlength="16" type="text" onFocus="" onkeypress="keypress(this)" onpaste="checkPaste()" onDrag="checkPaste()" oncut="checkPaste()" onmousemove="checkPaste()"> </p> </body> </html>
上面的JS收藏站是你做的吗?我看中了日期类的‘日期和时间钟’,但他是纯JS做的,我是需要选择好时间后把值插入数据库的,但是他没有正规的<input>html标签,我无从下手,本帮忙好吗?
上面有很多,自己改一下就可以用了
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html>
<head>
<title>test timeControl</title>
</head>
<script language="JavaScript">
// Written by cloudchen, 2004/03/15
// @name:必须:时间控件名称,自定义,不可重复
// @forObj:必须:对话数据项控件名称,不允许重复
// @fName:可选:时间控件组件,不允许重复
// last modfiy by 农民程序员([email protected]) 2004年9月7日 19:01:02
function timeControl(name,forObj,fName) {
this.name = name;
this.fName = fName || "mctr_input_"+this.name;
this.timer = null;
this.fObj = null;
this.toString = function() {
var objDate = new Date();
//
var sMinute_Common = "class=\"mctr_input\" maxlength=\"2\" name=\""+this.fName+"\" onfocus=\""+
this.name+".setFocusObj(this)\" onblur=\""+this.name+".setTime(this)\" onkeyup=\""+
this.name+".prevent(this)\" onkeypress=\"if (!/[0-9]/.test(String.fromCharCode(event.keyCode)))event.keyCode=0\""+
" onpaste=\"return false\" ondragenter=\"return false\" style=\"ime-mode:disabled\" onPropertychange=\""+
this.name+".setForObjValue()\"";
//
var sButton_Common = "class=\"mctr_arrow\" onfocus=\"this.blur()\" onmouseup=\""+this.name+".controlTime()\" disabled";
var str = "";
str +=" <style type=\"text/css\">"
str +=" .mctr_frameborder {"
str +=" border-left: 1px inset #D4D0C8;"
str +=" border-top: 1px inset #D4D0C8;"
str +=" border-right: 1px inset #D4D0C8;"
str +=" border-bottom: 1px inset #D4D0C8;"
str +=" width: 130px;"
str +=" height: 20px;"
str +=" background-color: #FFFFFF;"
str +=" overflow: hidden;"
str +=" text-align: left;" //text-align: right;
str +=" vertical-align: text-top;"
str +=" font-family: \"Tahoma\";"
str +=" font-size: 14px;"
str +=" }"
str +=" .mctr_arrow {"
str +=" width: 16px;"
str +=" height: 10px;"
str +=" font-family: \"Webdings\";"
str +=" font-size: 9px;"
str +=" line-height: 2px;"
str +=" background-color: #FFFFFF;"
str +=" padding-left: 2px;"
str +=" cursor: default;"
str +=" }"
str +=" .mctr_table {"
str +=" padding-top: 0px;"
str +=" padding-right: 0px;"
str +=" padding-bottom: 0px;"
str +=" padding-left: 0px;"
str +=" }"
str +=" .mctr_input {"
str +=" width: 18px;"
str +=" height: 16px;"
str +=" border: 0px solid black;"
str +=" font-size: 12px;"
str +=" text-align: right;"
str +=" background-color: transparent;"
str +=" }"
str +=" </style>";
str += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"mctr_table\">"
str += "<tr class=\"mctr_table\">"
str += "<td class=\"mctr_table\">"
str += "<span class=\"mctr_frameborder\">"
str += "<input radix=\"24\" value=\""+this.formatTime(objDate.getHours())+"\" "+sMinute_Common+">:"
str += "<input radix=\"60\" value=\""+this.formatTime(objDate.getMinutes())+"\" "+sMinute_Common+">:"
str += "<input radix=\"60\" value=\""+this.formatTime(objDate.getSeconds())+"\" "+sMinute_Common+">"
str += "</span>"
str += "</td>"
str += "<td class=\"mctr_table\">"
str += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"mctr_table\">"
str += "<tr class=\"mctr_table\"><td class=\"mctr_table\"><button id=\""+this.fName+"_up\" "+sButton_Common+">5</button></td></tr>"
str += "<tr class=\"mctr_table\"><td class=\"mctr_table\"><button id=\""+this.fName+"_down\" "+sButton_Common+">6</button></td></tr>"
str += "</table>"
str += "</td>"
str += "<td>"
str += "<input type=\"Text\" name=\""+forObj+"\" id=\""+forObj+"\" value=\""+this.getNowTime()+"\" style=\"display:'none'\">"
str += "</td>"
str += "</tr>"
str += "</table>"
return str;
}
this.getNowTime=function(){
var objDate = new Date();
return this.formatTime(objDate.getHours())+":"+
this.formatTime(objDate.getMinutes())+":"+
this.formatTime(objDate.getSeconds());
}
this.play = function() {
this.timer = setInterval(this.name+".playback()",1000);
}
this.formatTime = function(sTime) {
sTime = ("0"+sTime);
return sTime.substr(sTime.length-2);
}
this.playback = function() {
var objDate = new Date();
var arrDate = [objDate.getHours(),objDate.getMinutes(),objDate.getSeconds()];
var objMinute = document.getElementsByName(this.fName);
for (var i=0;i<objMinute.length;i++) {
objMinute[i].value = this.formatTime(arrDate[i])
}
}
this.setForObjValue=function(){
eval("document.all."+forObj+".value=this.getTime()");
}
this.prevent = function(obj) {
clearInterval(this.timer);
this.setFocusObj(obj);
var value = parseInt(obj.value,10);
var radix = parseInt(obj.radix,10)-1;
if (obj.value>radix||obj.value<0) {
obj.value = obj.value.substr(0,1);
}
}
this.controlTime = function(cmd) {
event.cancelBubble = true;
if (!this.fObj) return;
clearInterval(this.timer);
var cmd = event.srcElement.innerText=="5"?true:false;
var i = parseInt(this.fObj.value,10);
var radix = parseInt(this.fObj.radix,10)-1;
if (i==radix&&cmd) {
i = 0;
} else if (i==0&&!cmd) {
i = radix;
} else {
cmd?i++:i--;
}
this.fObj.value = this.formatTime(i);
this.fObj.select();
}
this.setTime = function(obj) {
obj.value = this.formatTime(obj.value);
}
this.setFocusObj = function(obj) {
eval("document.all."+this.fName+"_up").disabled = eval("document.all."+this.fName+"_down").disabled = false;
this.fObj = obj;
}
this.getTime = function() {
var arrTime = new Array(2);
for (var i=0;i<document.getElementsByName(this.fName).length;i++) {
arrTime[i] = document.getElementsByName(this.fName)[i].value;
}
return arrTime.join(":")
}
this.setInitControl=function(){
var iTime=eval("document.all."+forObj+".value");
var arrTime=new Array();
arrTime=str2Array(iTime,":");
for (var i=0;i<arrTime.length;i++){
document.getElementsByName(this.fName)[i].value=arrTime[i];
}
}
}
//将字符串str按照字符串ch拆分产生数组
function str2Array(str,ch)
{
var a=new Array();
var i=0,j=-1,k=0;
while (i<str.length)
{
j=str.indexOf(ch,j+1);
if (j!=-1)
{
if (j==0){a[k]="";}else{a[k]=str.substring(i,j);}
i=j+1;
}else
{
a[k]=str.substring(i,str.length);
i=str.length;
}
k++;
}
return a;
}
</script>
<body>
<script language="JavaScript">
<!--
var dateCtrl=new timeControl("dateCtrl","txtDateE");
document.write(dateCtrl);
//-->
</script>
<button onclick="alert(document.all.txtDateE.value)">click me</button>
</body>
</html>保存为htm页,运行
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="javascript">
function keydown(src){
var e=window.event;
var code=e.keyCode;
var cursorPos=getPos(src);
if(code==8){ //退格
if(cursorPos==5 || cursorPos==8|| cursorPos==11 || cursorPos==14){
movenext(src,cursorPos,-1);
cursorPos-=1;
}else movenext(src,cursorPos,0);
//alert();
var range=setSelect(src,cursorPos-1);
range.text="0";
movenext(src,cursorPos,-1);
e.returnValue=false;
//src.focus();
return false;
}else if(code==46) e.returnValue=false;
}
function keypress(src){
var e=window.event;
var code=e.keyCode;
var cursorPos=getPos(src);
if(!keyPressInt()) return false;
if(cursorPos==4 || cursorPos==7|| cursorPos==10 || cursorPos==13){
movenext(src,cursorPos,1);
cursorPos += 1;
}
var num = String.fromCharCode(code);
//alert(num);
if(checkInput(src,num,cursorPos)){
var range=setSelect(src,cursorPos);
range.text=num;
if(cursorPos==3 || cursorPos==6|| cursorPos==9 || cursorPos==12)
movenext(src,cursorPos,2);
else movenext(src,cursorPos,1);
}
e.returnValue=false;
return false;
}
function checkInput(src,num,pos){
var val=src.value;
var year=parseInt(val.substring(0,4),10);
var month=parseInt(val.substring(5,7),10); switch(pos){
case 0: if(num!=1 && num!=2) return false; break;
case 5: var char6=val.charAt(6); if(num>1 || num==1 && char6>2) return false;break;
case 6: if(val.charAt(5)=="1" && num>2 || val.charAt(5)=="0" && num==0)
return false;break;
case 8: var char9=val.charAt(9);
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if(num>3 || num==3&&char9>1) return false;break;
case 4: case 6: case 9: case 11:
if(num>3 || num==3&&char9>0) return false;break;
case 2: if(num>2) return false;break;
}break;
case 9: var char8=val.charAt(8); switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if(char8==0 && num==0 || char8==3 && num>1) return false;break;
case 4: case 6: case 9: case 11:
if(char8==0 && num==0 || char8==3 && num!=0) return false;break;
case 2: if(char8==0 && num==0) return false;
else if(char8==2 && !(year%4==0 && year %400==0) && num>8) return false;
}break;
case 11: if(num>2||num==2&&val.charAt(12)>3) return false;break;
case 12: if(parseInt(val.charAt(11)+num)>23) return false;break;
case 14: if(num>5) return false;break;
}
return true;
}
function setSelect(src,pos){
var range = src.createTextRange();
range.moveStart('character',pos);
range.moveEnd('character',pos-src.value.length+1);
range.select();
return range;
}
function getPos(obj){
var ml=obj.value.length;
var pos=0;
var rng=document.selection.createRange();
rng.moveEnd("character",ml);
try{
pos=ml-rng.text.length
}catch(e){}
return pos;
}
function movenext(src,pos,flag)
{
var range =src.createTextRange();
range.moveStart("character",pos+flag);
range.collapse(true);
range.select();
}
function keyPressInt(){
var e=window.event;
code=e.keyCode;
if(code >=48 && code <=57) return true;
else {window.event.returnValue=false;return false;}
}
function checkPaste(){
window.event.returnValue=false;
}
</script>
</head><body>
<p align=center>
<input name="dateinput" value="0000-00-00 00:00" onkeydown="keydown(this)" size="16" maxlength="16" type="text" onFocus="" onkeypress="keypress(this)" onpaste="checkPaste()" onDrag="checkPaste()" oncut="checkPaste()" onmousemove="checkPaste()">
</p>
</body>
</html>
8错,厉害
但是,用户按退格键好像就出问题了