由于官方的时间控件只能精确到分钟,如果想要达到控制到秒的需要,可以找到static/js/calendar.js文件 作如下修改
效果图:
一:添加秒的控件 找到代码
s += '<span id="fullhourselector"><input type="text" size="1" value=""
id="minute" class="px vm" onKeyUp=\'this.value=this.value > 59 ? 59 :
zerofill(this.value);controlid.value=controlid.value.replace(/([url=file://\\d+\:)\\d+/ig]\\d+\:)\\d+/ig[/url],
"$1"+this.value)\'>分</span>';
在"分" 和 "</span>"之间添加
<input type="text" size="1" value="" id="second" class="px vm"
onKeyUp=\'this.value=this.value > 59 ? 59 :
zerofill(this.value);controlid.value=controlid.value.replace(/([url=file://\\d+\:\\d+\:)\\d+/ig]\\d+\:\\d+\:)\\d+/ig[/url],
"$1"+this.value)\'>秒
二:修改 parsedate 函数
function parsedate(s)
{
/(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\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;
var m6 =
(RegExp.$7 && (RegExp.$7 > -1 && RegExp.$7 < 60)) ?
parseFloat(RegExp.$7) :
0;
/(\d+)\-(\d+)\-(\d+)\s*(\d*):?(\d*)?(:?(\d*))/.exec("0000-00-00
00\:00\:00");
return new Date(m1, m2 - 1, m3, m4, m5, m6);
}
三:修改 settime 函数
function settime(d) {
if(!addtime) {
$('calendar').style.display =
'none';
$('calendar_month').style.display = 'none';
if(BROWSER.ie
&& BROWSER.ie < 7) {
$('calendariframe').style.display =
'none';
}
}
controlid.value = yy + "-" + zerofill(mm + 1) + "-" +
zerofill(d) + (addtime ? ' ' + zerofill($('hour').value) + ':' +
zerofill($('minute').value) + ':' + zerofill($('second').value) : '');
}
四:修改 confirmcalendar 函数
function confirmcalendar() {
if(addtime && controlid.value === '')
{
controlid.value = today.getFullYear() + '-' + (today.getMonth() + 1) + '-'
+ today.getDate() + ' ' + zerofill($('hour').value) + ':' +
zerofill($('minute').value) + ':' +
zerofill($('second').value);
}
closecalendar();
}
五:在 showcalendar 函数中找到
ii = currday.getMinutes();
在后面添加
ss = currday.getSeconds();
六:在 refreshcalendar 函数中最后一个IF语句内添加
$('second').value = zerofill(ss);
七:为使添加的不影响控件的显示美观,分别将 colspan="4" 改为 colspan="5" 和 colspan="3" 改为 colspan="2"
s += '<tr id="hourminute" class="pns"><td colspan="4"
align="left"><input type="text" size="1" value="" id="hour" class="px vm"
onKeyUp=\'this.value=this.value > 23 ? 23 :
zerofill(this.value);controlid.value=controlid.value.replace(/\\d+(\:\\d+)/ig,
this.value+"$1")\'>点';
<p> </p>
<p>s += '</td><td align="right" colspan="3"><button
class="pn"><em>确定</em></button></td></tr>';</p>
八:请确保在使用时间控件的HTML页面中要包含一个 <div id="append_parent"></div>
的标签,这是时间控件要用到的标签,否则会引起JS脚本错误。