Discuz 时间精确

由于官方的时间控件只能精确到分钟,如果想要达到控制到秒的需要,可以找到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>';

在”分” 和 ““之间添加

<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脚本错误。

赞(0) 打赏
取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

    暂无评论...