JQuery UI datepicker“对话框”在IE8中不起作用

时间:2014-02-04 23:26:37

标签: javascript jquery jquery-ui internet-explorer internet-explorer-8

我似乎无法使用设置为在IE 8中工作的“对话框”选项获取日期选择器,可以在其他任何地方使用,但在IE8中它说

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是span标记的jquery对象。但在其他浏览器中工作正常。

这不是一个jquery IU问题,因为我可以看到在同一页面上我有另一个没有对话框选项的日期选择器并且它可以工作。

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

我正在做的网站是企业级,所以IE8是绝对必须的。我试图搜索这个问题,虽然我看到有关jquery ui的IE 8问题的主题,但似乎没有一个匹配。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

两段代码之间的差异是root.text().trim()部分。这在IE8中不起作用,因为在IE8中没有定义String.prototype.trim;支持从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说明了这一点(以及用户定义的函数可以)

参考文献: