jQuery UI在Server 2008 IE8下DatePicker问题修复

这真是个WTF的问题,类似参见Stack Overflow

这个DatePicker问题只在Server 2008的IE8下出现。至于为什么win7的IE8支持,Server2008的IE8不支持,就不知道了。可能升级jQuery UI版本能够升级这个问题,但是由于实验室项目比较庞大,升级代价太大。所以只能试图修复。

  1. Debug一段时间,发现问题究其根本是由于button、a、td标签的onclick方法不被IE8支持。
  2. 现在实用的jQuery UI版本是min版,看着真是费劲,从网上下载来源码,看着舒服多了。
  3. 修改jQuery源代码。7894行:
_selectDay: function(id, month, year, td) {  
    var target = $(id);  
    if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {  
        return;  
    }  
    var inst = this._getInst(target[0]);  
    inst.selectedDay = inst.currentDay = $('a', td).html(); 

修改为

_selectDay: function(id, month, year, day) {  
    var target = $(id);  
    if (this._isDisabledDatepicker(target[0])) {  
        return;  
    }  
    var inst = this._getInst(target[0]);  
    inst.selectedDay = inst.currentDay = day; 

8445行和8454行将响应方法由onclick转移到href。8462-8467行的button标签修改为a标签。同样将响应方法从onclick转移到href。这两个button修改标签之后样式不和谐,加入了一些css来控制与之前一致。

float: right;
margin: 0.5e m 0.2e m 0.4e m;
padding: 0.2e m 0.6e m 0.3e m 0.6e m;
color: #2f6ca9;
font-size: 0.8em;
font-weight: bold;
text-align: center;
text-decoration: none;

最烦浏览器兼容性问题,这次又成功解决了。

Comments

comments powered by Disqus