1

我在 Drupal 6 上使用了出色的 JQuery 上传小部件。由于该小部件没有指定的模块(有 D7,但没有 D6),我正在使用drupal_add_js(通过帮助模块)添加必要的文件。

所以文件上传工作,但如果我将日期弹出添加到 Drupal 表单,它会导致 JQuery UI(由弹出日期激活)中断。

更具体地说,它会产生以下错误消息:

"TypeError: $.widget.extend is not a function"

我已经阅读了一些处理类似问题的线程,并尝试遵循给出的一些建议。据我所知,问题是这样的:

  1. JQuery 文件上传小部件使用从文件夹jquery.ui.widget.js调用的(在帮助模块中使用)/fileupload/js/drupal_add_js
  2. 如果我将日期弹出字段添加到 Drupal 表单,则 Jquery UIsites/all/libraries/jquery.ui/ui/ui.core.js会启动,其中已经包含jquery.ui.widget导致错误

现在在这一点上,我认为删除我的调用是有意义的,jquery.ui.widget.js但问题是:

  1. 其他fileupload.js依赖它,并且:
  2. D6 Jquery UI 模块在通过/sites/all/libraries/jquery.ui/ui/ui.core.jsAFTER 包含的所有文件之后添加,因此由于在读取时缺乏支持drupal_add_js而中断(并产生以下错误: fileuploadjquery.ui.widget

    TypeError: $.widget is not a function
    TypeError: $(...).fileupload is not a function )
    

我尝试将自定义模块的权重(通过编辑数据库中的系统表)设置为较高的值,但仍然在所有文件之后添加了 Jquery UIdrupal_add_js文件。

如果有人可以就如何解决这个问题提供一些进一步的见解,那将是真正有帮助的。

4

1 回答 1

0

我在 WordPress 中看到了同样的问题,结果发现使用 .fileupload() 的插件正在添加自己的 Jquery UI 版本,而 WordPress 正在添加另一个。当我删除额外的 JqueryUI 时,它起作用了。

这个问题使我朝着正确的方向前进:jQuery UI TypeError: e.widget.extend is not a function

于 2015-05-08T10:40:13.100 回答