求js时间控件

JavaScript029

求js时间控件,第1张

<%@page contentType="text/html" %>

<%@page pageEncoding="UTF-8" %>

<%@ page import="java.util.Date" %>

<html>

<body bgcolor="#99ccff"onload="disptime()">

<FORM NAME="myform">

<DIV align="center">

<SCRIPT language="JavaScript">

<!--

function disptime( )

{

var time = new Date( )//获得当前时间

var hour = time.getHours( )//获得小时、分钟、秒

var minute = time.getMinutes( )

var second = time.getSeconds( )

var apm="AM"//默认显示上午: AM

if (hour>12) //按12小时制显示

{

hour=hour-12

apm="PM"

}

if (minute <10) //如果分钟只有1位,补0显示

minute="0"+minute

if (second <10) //如果秒数只有1位,补0显示

second="0"+second

/*设置文本框的内容为当前时间*/

document.myform.myclock.value =hour+":"+minute+":"+second+" "+apm

/*设置定时器每隔1秒(1000毫秒),调用函数disptime()执行,刷新时钟显示*/

var myTime = setTimeout("disptime()",1000)

}

//-->

</SCRIPT>

<INPUT name="myclock" type="text" value="" size="15">

</body></html>

<script language="javascript">

//下面的代码段如果你页面里有,可以去掉

var ie =navigator.appName=="Microsoft Internet Explorer"?true:false

function $(objID){

return document.getElementById(objID)

}

</script>

</head>

<body>

<script type="text/javascript">

var controlid = null

var currdate = null

var startdate = null

var enddate = null

var yy = null

var mm = null

var hh = null

var ii = null

var currday = null

var addtime = false

var today = new Date()

var lastcheckedyear = false

var lastcheckedmonth = false

function _cancelBubble(event) {

e = event ? event : window.event

if(ie) {

e.cancelBubble = true

} else {

e.stopPropagation()

}

}

function getposition(obj) {

var r = new Array()

r['x'] = obj.offsetLeft

r['y'] = obj.offsetTop

while(obj = obj.offsetParent) {

r['x'] += obj.offsetLeft

r['y'] += obj.offsetTop

}

return r

}

function loadcalendar() {

s = ''

s += '<div id="calendar" style="display:noneposition:absolutez-index:9" onclick="_cancelBubble(event)">'

if (ie)

{

s += '<iframe width="200" height="160" src="about:blank" style="position: absolutez-index:-1"></iframe>'

}

s += '<div style="width: 200px"><table class="tableborder" cellspacing="0" cellpadding="0" width="100%" style="text-align: center">'

///

s += '<tr align="center" class="header"><td class="header"><A href="#" onclick="refreshcalendar(yy-1, mm)return false" title="上一年"><<</A>    <a href="#" onclick="refreshcalendar(yy, mm-1)return false" title="上一月"><</a></td><td colspan="5" style="text-align: center" class="header"><a href="#" onclick="showdiv(\'year\')_cancelBubble(event)return false" title="点击选择年份" id="year"></a><a id="month" title="点击选择月份" href="#" onclick="showdiv(\'month\')_cancelBubble(event)return false"></a></td><td class="header"><A href="#" onclick="refreshcalendar(yy, mm+1)return false" title="下一月">></A>    <A href="#" onclick="refreshcalendar(yy+1, mm)return false" title="下一年">>></A></td></tr>'

s += '<tr class="category"><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>'

for(var i = 0i <6i++) {

s += '<tr class="altbg2">'

for(var j = 1j <= 7j++)

s += "<td id=d" + (i * 7 + j) + " height=\"19\">0</td>"

s += "</tr>"

}

s += '<tr id="hourminute"><td colspan="7" align="center"><input type="text" size="1" value="" id="hour" onKeyUp=\'this.value=this.value >23 ? 23 : zerofill(this.value)controlid.value=controlid.value.replace(/\\d+(\:\\d+)/ig, this.value+"$1")\'>点 <input type="text" size="1" value="" id="minute" onKeyUp=\'this.value=this.value >59 ? 59 : zerofill(this.value)controlid.value=controlid.value.replace(/(\\d+\:)\\d+/ig, "$1"+this.value)\'>分</td></tr>'

s += '</table></div></div>'///

s += '<div id="calendar_year" onclick="_cancelBubble(event)"><div class="col">'

for(var k = 1930k <= 2069k++) {

s += k != 1930 &&k % 10 == 0 ? '</div><div class="col">' : ''

s += '<a href="#" onclick="refreshcalendar(' + k + ', mm)$(\'calendar_year\').style.display=\'none\'return false"><span' + (today.getFullYear() == k ? ' class="today"' : '') + ' id="calendar_year_' + k + '">' + k + '</span></a><br />'

}

s += '</div></div>'

s += '<div id="calendar_month" onclick="_cancelBubble(event)">'

for(var k = 1k <= 12k++) {

s += '<a href="#" onclick="refreshcalendar(yy, ' + (k - 1) + ')$(\'calendar_month\').style.display=\'none\'return false"><span' + (today.getMonth()+1 == k ? ' class="today"' : '') + ' id="calendar_month_' + k + '">' + k + ( k <10 ? ' ' : '') + ' 月</span></a><br />'

}

s += '</div>'

var nElement = document.createElement("div")

nElement.innerHTML=s

document.getElementsByTagName("body")[0].appendChild(nElement)

//document.write(s)

document.onclick = function(event) {

$('calendar').style.display = 'none'

$('calendar_year').style.display = 'none'

$('calendar_month').style.display = 'none'

}

$('calendar').onclick = function(event) {

_cancelBubble(event)

$('calendar_year').style.display = 'none'

$('calendar_month').style.display = 'none'

}

}

function parsedate(s) {

/(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)/.exec(s)

var m1 = (RegExp.$1 &&RegExp.$1 >1899 &&RegExp.$1 <2101) ? parseFloat(RegExp.$1) : today.getFullYear()

var m2 = (RegExp.$2 &&(RegExp.$2 >0 &&RegExp.$2 <13)) ? parseFloat(RegExp.$2) : today.getMonth() + 1

var m3 = (RegExp.$3 &&(RegExp.$3 >0 &&RegExp.$3 <32)) ? parseFloat(RegExp.$3) : today.getDate()

var m4 = (RegExp.$4 &&(RegExp.$4 >-1 &&RegExp.$4 <24)) ? parseFloat(RegExp.$4) : 0

var m5 = (RegExp.$5 &&(RegExp.$5 >-1 &&RegExp.$5 <60)) ? parseFloat(RegExp.$5) : 0

/(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)/.exec("0000-00-00 00\:00")

return new Date(m1, m2 - 1, m3, m4, m5)

}

function settime(d) {

$('calendar').style.display = 'none'

controlid.value = yy + "-" + zerofill(mm + 1) + "-" + zerofill(d) + (addtime ? ' ' + zerofill($('hour').value) + ':' + zerofill($('minute').value) : '')

}

function showcalendar(event, controlid1, addtime1, startdate1, enddate1) {

controlid = controlid1

addtime = addtime1

startdate = startdate1 ? parsedate(startdate1) : false

enddate = enddate1 ? parsedate(enddate1) : false

currday = controlid.value ? parsedate(controlid.value) : today

hh = currday.getHours()

ii = currday.getMinutes()

var p = getposition(controlid)

$('calendar').style.display = 'block'

$('calendar').style.left = p['x']+'px'

$('calendar').style.top = (p['y'] + 20)+'px'

_cancelBubble(event)

refreshcalendar(currday.getFullYear(), currday.getMonth())

if(lastcheckedyear != false) {

$('calendar_year_' + lastcheckedyear).className = 'default'

$('calendar_year_' + today.getFullYear()).className = 'today'

}

if(lastcheckedmonth != false) {

$('calendar_month_' + lastcheckedmonth).className = 'default'

$('calendar_month_' + (today.getMonth() + 1)).className = 'today'

}

$('calendar_year_' + currday.getFullYear()).className = 'checked'

$('calendar_month_' + (currday.getMonth() + 1)).className = 'checked'

$('hourminute').style.display = addtime ? '' : 'none'

lastcheckedyear = currday.getFullYear()

lastcheckedmonth = currday.getMonth() + 1

}

function refreshcalendar(y, m) {

var x = new Date(y, m, 1)

var mv = x.getDay()

var d = x.getDate()

var dd = null

yy = x.getFullYear()

mm = x.getMonth()

$("year").innerHTML = yy

$("month").innerHTML = mm + 1 >9 ? (mm + 1) : '0' + (mm + 1)

for(var i = 1i <= mvi++) {

dd = $("d" + i)

dd.innerHTML = " "

dd.className = ""

}

while(x.getMonth() == mm) {

dd = $("d" + (d + mv))

dd.innerHTML = '<a href="###" onclick="settime(' + d + ')return false">' + d + '</a>'

if(x.getTime() <today.getTime() || (enddate &&x.getTime() >enddate.getTime()) || (startdate &&x.getTime() <startdate.getTime())) {

dd.className = 'expire'

} else {

dd.className = 'default'

}

if(x.getFullYear() == today.getFullYear() &&x.getMonth() == today.getMonth() &&x.getDate() == today.getDate()) {

dd.className = 'today'

dd.firstChild.title = '今天'

}

if(x.getFullYear() == currday.getFullYear() &&x.getMonth() == currday.getMonth() &&x.getDate() == currday.getDate()) {

dd.className = 'checked'

}

x.setDate(++d)

}

while(d + mv <= 42) {

dd = $("d" + (d + mv))

dd.innerHTML = " "

d++

}

if(addtime) {

$('hour').value = zerofill(hh)

$('minute').value = zerofill(ii)

}

}

function showdiv(id) {

var p = getposition($(id))

$('calendar_' + id).style.left = p['x']+'px'

$('calendar_' + id).style.top = (p['y'] + 16)+'px'

$('calendar_' + id).style.display = 'block'

}

function zerofill(s) {

var s = parseFloat(s.toString().replace(/(^[\s0]+)|(\s+$)/g, ''))

s = isNaN(s) ? 0 : s

return (s <10 ? '0' : '') + s.toString()

}

loadcalendar()

</script>

</head>

<style>

table tr .td_bg { text-align:leftpadding-left:10px}

#att_info tr td { padding:3pxpadding-left:10px}

.header {font: 12px Arial, Tahoma !importantfont-weight: bold !importantfont: 11px Arial, Tahomafont-weight: boldcolor: #154BA0background:#C2DEEDheight: 25pxpadding-left: 10px

}

.header td {padding-left: 10px}

.header a {color: #154BA0}

.header input {background:nonevertical-align: middleheight: 16px}

.category {font: 12px Arial, Tahoma !importantfont: 11px Arial, Tahomacolor: #92A05Aheight:20pxbackground-color: #FFFFD9}

.category td {border-bottom: 1px solid #DEDEB8}

.expire, .expire a:link, .expire a:visited {color: #999999}

.default, .default a:link, .default a:visited {color: #000000}

.checked, .checked a:link, .checked a:visited {color: #FF0000}

.today, .today a:link, .today a:visited {color: #00BB00}

#calendar_year {display: noneline-height: 130%background: #FFFFFFposition: absolutez-index: 10}

#calendar_year .col {float: leftbackground: #FFFFFFmargin-left: 1pxborder: 1px solid #86B9D6padding: 4px}

#calendar_month {display: nonebackground: #FFFFFFline-height: 130%border: 1px solid #86B9D6padding: 4pxposition: absolutez-index: 11}

.tableborder {background: whiteborder: 1px solid #86B9D6}

#year,#month{padding-right:10px}

</style>

<tr>

<td class="td_bg" width="10%">生日:</td>

<td class="td_bg" height="26" colspan="3"><input type="text" name="shengri" value="" size="14" onClick="showcalendar(event,this)" onFocus="showcalendar(event,this)"/></td>

</tr>

日期插件的包为:mydate.js。

1:首先将日期插件的包引入到页面中

<script language="JavaScript" src="../Inc/Js/mydate.js"></script>

2:设置鼠标点击事件,当鼠标点击获得焦点的时候,触发事件,调用方法

<input type="text" name="starttime" onfocus="MyCalendar.SetDate(this)" value="<?php echo $rq?>">

<input type="text" name="endtime" onfocus="MyCalendar.SetDate(this)" value="<?php echo $rq?>">

3:完整页面代码

<?php

  date_default_timezone_set("PRC")

  $nowtime = time()

  $rq = date("Y-m-d",$nowtime)

?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html charset=gb2312" />

<meta name="generator" content="FFKJ.Net" />

<link rev="MADE" href="mailto:[email protected]">

<title>在线--后台</title>

<link rel="stylesheet" type="text/css" href="../Skins/Admin_Style.Css" />

<script language="JavaScript" src="../Inc/Js/mydate.js"></script>

</head>

<body>

开始时间:<input type="text" name="starttime" onfocus="MyCalendar.SetDate(this)" value="<?php echo $rq?>">

结束时间:<input type="text" name="endtime" onfocus="MyCalendar.SetDate(this)" value="<?php echo $rq?>">

</body>

</html>