我似乎无法通过"对话框"选项在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的功能或我自己的功能(不扩展原型)。如果值实际为 null
或 undefined
...则会引发错误。$.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