4

我的自定义类型中的 RelationChoice 小部件工作正常,直到collective.js.jqueryui autocomplete启用,然后它停止工作,即停止进行关系查找;当您在该字段中键入时,没有任何反应。

(在网站的另一部分,我使用collective.js.jqueryui autocompleteGoogle Maps API 在用户填写地址字段时返回地址建议。)

当前的解决方法是collective.js.jqueryui autocomplete在我想使用 RelationChoice 小部件时禁用(然后重新启用)。不是一个好的解决方案。

  • 克隆 4.2.1.1
  • collective.js.jqueryui 1.8.16.9(也尝试过 1.10.0.1 - 相同的冲突)
  • plone.app.dexterity 1.2.1

独立:

  • 如果我只启用plone.formwidget.autocomplete/jquery.autocomplete.min.js我的谷歌地图查找不会触发(见下面的代码)但 RelationChoice 小部件有效
  • 如果我只启用collective.js.jqueryui autocomplete我的谷歌地图查找工作但 RelationChoice 小部件不会触发

代码示例:


    $(document).ready(function() {
        initialize();

        $(function() { // Google maps lookup
            $("#address").autocomplete({
                //This bit uses the geocoder to fetch address values
                source: function(request, response) {
                geocoder.geocode( {'address': request.term}, function(results, status) { ...

    ... <input type="text" name="address" id="address" autocomplete="off" class="ac_input">

我可以plone.formwidget.autocomplete/jquery.autocomplete.min.js在上面的代码中重复使用吗?我不知道如何让它触发我的谷歌地图查找......?(collective.js.jqueryui autocomplete启用后成功激活上述功能。)

4

3 回答 3

2

好的,我已经做到了。至少在 Plone 4.3 上

第一部分是,完全启用包中的 jQuery ui 效果。存在命名空间问题和丢失文件,导致.effects() is not a function.

首先,将正确的 jQueryUI 版本 cd 下载到其中并

jquery=/buildout_dir/parts/omelette/collective/js/jqueryui

cp jquery.ui.effect.min.js $jquery/js/jquery.ui.effect.core.min.js

然后 cd 进入$jquery目录并将所有效果包转换为正确的命名空间。例如:

mv js/jquery.ui.effect-highlight.min.js js/jquery.ui.effect.highlight.min.js

然后用 替换所有出现effectseffect $jquery/config.py。在 vim 中使用

:1,$s/effects/effect/g

其次,要启用基于 jQuery 的自动完成小部件,请 cd 进入构建的 src 目录,然后

 git clone https://github.com/plone/plone.formwidget.autocomplete.git plone.formwidget.autocomplete
 git checkout jqueryui-autocomplete

然后编辑你的versions.cfg. 为了我

plone.formwidget.autocomplete >= 2.0

作品。然后编辑您的并在和buildout.cfg下添加包。我做了一个扩展,但它可能足以重新启动 Zope。最后一步显然是访问门户安装程序并重新安装产品。zcmldevelop

更新

如评论中所述,它没有完全发挥作用。我还必须修改一个 .js 文件,即autocomplete.jsplone.formwidget.autocomplete包中。这是结果

http://pastebin.com/RPaLk80H

这一切使 RelationChoiceWidget 和 AutocompleteWidget以一种形式一起工作。我喜欢。

我还在 github 上为 jQueryUI 包提交了错误报告。

于 2013-05-13T06:44:44.820 回答
2

Contenttree 小部件基于自动完成小部件。

自动完成小部件与 jqueryui 自动完成插件冲突。

使用collective.js.jqueryui,您可以使用portal_registry 取消激活自动完成插件。

ploneformwidget.autocomplete 被 jqueryui 破坏了很多年。plone.formwidget.autocomplete 有一个基于 jqueryui(分支 2.0)的分支,但我还没有使用 contenttree 小部件对其进行测试。

所以要解决您的问题:转到 jqueryui 控制面板并取消选中自动完成插件。

于 2013-03-27T13:43:19.113 回答
1

更新(根据问题的更新):

参考 Martin 的教程和关于关系的部分,Dexterity 拉取 plone.formwidget.contenttree,拉取 plone.formwidget.contenttree,拉取 plone.formwidget.autocomplete。

后者包括 jQuery 的自动完成源,collective.js.jqueryui 也是如此,由您的地图产品拉取。很可能发生冲突。

尝试这个:

于 2013-03-27T10:42:55.443 回答