JQuery UI 日期选择器"dialog"在 IE8 中不起作用



我似乎无法通过"对话框"选项在IE 8中使用的"对话框"选项获得datepicker

Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Timestamp: Tue, 4 Feb 2014 23:19:02 UTC

Message: Object doesn't support this property or method
Line: 974
Char: 4
Code: 0
URI: http://dev.site.com/page

这是它引用的行。

root.datepicker('dialog',root.text().trim(),function(date){
 root.text(date);
 saveCourseDate(root);
},{
 altFormat:'yy-mm-dd',
 dateFormat:'yy-mm-dd'
});

root是跨度标签的jQuery对象。

在其他浏览器中工作正常。

,据我在同一页面上所看到的,这不是一个jQuery iu问题,我有另一个日期选择器没有对话框选项,并且可以使用。

jQuery('#course_date').datepicker({altFormat:"yy-mm-dd",dateFormat: "yy-mm-dd"});

我正在做的网站是企业级别,因此IE8是绝对的。我试图搜索此问题,尽管我看到了关于jQuery UI的8个问题的主题,但似乎都不匹配。

有什么想法?

您的两个代码段之间的区别是root.text().trim()部分。这在IE8中不起作用,因为String.prototype.trim未在IE8中定义;支持从IE9开始。

由于您有jQuery,因此您不妨使用其实用程序函数$.trim()。您会像以下方式一样使用它:

root.datepicker('dialog',$.trim(root.text()),function(date){

您的其他选择是扩展String.prototype并自己添加一种方法,例如:

if (!String.prototype.trim) {
    String.prototype.trim = (function () {
        var re, ret;
        re = /^s+|s+$/g;
        ret = function () {
            return this.replace(re, "");
        };
        return ret;
    }());
}

这样,您可以保留原始代码。如果您使用此功能,请确保其在有问题的代码之前执行。

或仅采用该代码,并使其成为您可以像$.trim()一样调用的函数。我个人喜欢使用jQuery的功能或我自己的功能(不扩展原型)。如果值实际为 nullundefined ...则会引发错误。$.trim为此(以及用户定义的功能)

参考:

  • String.prototype.trim兼容性:http://kangax.github.io/es5-compat-table/#string.prototype.trim
  • $.trim():http://kangax.github.io/es5-compat-table/#string.prototype.trim

最新更新