首页 > 代码库 > PHPCMS里的日历插件及在IE下报Calendar未定义

PHPCMS里的日历插件及在IE下报Calendar未定义

日历代码:

<link rel="stylesheet" type="text/css" href="calendar/jscal2.css"/><link rel="stylesheet" type="text/css" href="calendar/border-radius.css"/><link rel="stylesheet" type="text/css" href="calendar/win2k.css"/><script type="text/javascript" src="calendar/calendar.js"></script><script type="text/javascript" src="calendar/lang/en.js"></script>    <tr>        <th>上线时间 :</th>        <td><input type="text" name="subject[fromdate]" id="fromdate" value="" size="10" class="date" readonly>&nbsp;<script type="text/javascript">            Calendar.setup({            weekNumbers: true,            inputField : "fromdate",            trigger    : "fromdate",            dateFormat: "%Y-%m-%d",            showTime: false,            minuteStep: 1,            onSelect   : function() {this.hide();}            });        </script></td>    </tr>    <tr>        <th>下线时间 :</th>        <td><input type="text" name="subject[todate]" id="todate" value="" size="10" class="date" readonly>&nbsp;<script type="text/javascript">            Calendar.setup({            weekNumbers: true,            inputField : "todate",            trigger    : "todate",            dateFormat: "%Y-%m-%d",            showTime: false,            minuteStep: 1,            onSelect   : function() {this.hide();}            });        </script></td>    </tr>    

 

在IE下报Calendar未定义:

     调用时在IE下报  “Calendar”未定义  的错误,致使日期控件无法使用
 
     原因是由在IE下,calendar.js文件加载没有阻塞Calendar.setup()方法的运行,Calendar.setup()在calendar.js未加载的情况,就开始执行了,所以就报出“Calendar”未定义  的错误
 
解决办法:
找到phpcmsbs/class/form.class.php文件
在174到182行 
Calendar.setup({ weekNumbers: ‘.$showweek.‘,    inputField : "‘.$id.‘",   trigger    : "‘.$id.‘",   dateFormat: "‘.$format.‘",   showTime: ‘.$showsTime.‘,   minuteStep: 1,   onSelect   : function() {this.hide();}}); 改成:$(function(){Calendar.setup({weekNumbers: ‘.$showweek.‘,   inputField : "‘.$id.‘",   trigger    : "‘.$id.‘",   dateFormat: "‘.$format.‘",   showTime: ‘.$showsTime.‘,   minuteStep: 1,   onSelect   : function() {this.hide();}});});