首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery UI数据报警器“对话框”在IE8中不起作用

JQuery UI数据报警器“对话框”在IE8中不起作用
EN

Stack Overflow用户
提问于 2014-02-04 23:26:37
回答 1查看 1.9K关注 0票数 0

我似乎无法让“对话框”选项设置为在IE 8中工作,在其他任何地方都可以工作,但在IE8中则是这样说的。

代码语言:javascript
复制
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

这是它所指的行。

代码语言:javascript
复制
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问题,因为在同一页上,我有另一个没有对话框选项的日期选择器,它可以工作。

代码语言:javascript
复制
jQuery('#course_date').datepicker({altFormat:"yy-mm-dd",dateFormat: "yy-mm-dd"});

我所做的网站是企业级的,所以IE8是绝对必须的。我试图搜索这个问题,虽然我看到了关于jquery的IE8问题的主题,但似乎没有一个能与此相匹配。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-02-04 23:37:09

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

由于您有jQuery,所以最好使用它的实用函数$.trim()。你会把它当作:

代码语言:javascript
复制
root.datepicker('dialog',$.trim(root.text()),function(date){

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

代码语言:javascript
复制
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...then的情况下,它将引发错误。$.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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21565709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档