使用 jquery 1.6 及更高版本会使 Django 的 FilteredSelectMutliple 无法使用

Posted

技术标签:

【中文标题】使用 jquery 1.6 及更高版本会使 Django 的 FilteredSelectMutliple 无法使用【英文标题】:Using jquery versions 1.6 and above makes Django's FilteredSelectMutliple unusable 【发布时间】:2012-02-24 18:46:35 【问题描述】:

我正在做一个需要我使用 FilteredSelectMultiple 的 Django 项目,这是一个示例:

crews = ModelMultipleChoiceField(
          queryset=Crew.objects.all(),
          widget=widgets.FilteredSelectMultiple(
            "Crews", is_stacked=False ),
          required=True
        )

当然,在模板中,我已经正确调用了 SelectBox、SelectFilter 和 core.js:

<script type="text/javascript" charset="utf-8" src="/web/js/core.js" ></script>
<script type="text/javascript" charset="utf-8" src="/web/js/SelectFilter2.js" ></script>
<script type="text/javascript" charset="utf-8" src="/web/js/SelectBox.js" ></script>

这适用于 1.6 以下的每个 jquery 版本。现在的问题是,我实际上需要一个 1.6 及更高版本的 jquery。原因是,我需要使用更新的验证引擎。为什么,这是因为每当我使用 validationEngine 验证表单时,它实际上超出了表单,我希望它留在该表单的 div 中。

为了防止它发生,我需要在声明验证引擎时添加一些选项,这就是我的做法:

$("#addform").validationEngine(
  relative: true,
  overflownDIV: ".data_container",
);

更新版本的validationEngine要求我至少有1.6及以上版本的jQuery。

到目前为止,我尝试/想到的解决方案是:

    找到一个可以正常加载的稳定jQuery版本

    我在这方面失败了。我尝试使用 1.4.2 和最新版本之间的所有 jQuery 版本,即 1.7.1,但没有运气

    加载 2 个 jQuery 版本

    这听起来不错,但我试过了,还是失败了

    把validationEngine改成别的东西

    这是我真的不想做的最后一个选择。我们已经做了很多事情,以至于使用另一个可能需要我们的时间,这超出了我们所拥有的。

现在,我真正的问题是,除了我目前想到的选项之外,还有其他解决方案吗?目前还没有用于渲染 FilteredSelectMultiple 小部件的更新 js 文件。

【问题讨论】:

您是在 Django 管理员中执行此操作,还是尝试在管理员外部以您自己的形式使用管理员的 FilteredSelectMultiple 小部件? 嗨,是的,我在管理员之外的自己的表单中使用 FilteredSelectMultiple 小部件。 【参考方案1】:

Django 目前随 jQuery 1.4.2 一起发布。甚至主干仍在使用该版本。因此,所有小部件等都是在考虑该版本的情况下构建的。很可能在 jQuery 1.6+ 中有一些向后不兼容的变化。

这意味着你基本上有两个选择。

    您可以加载两个版本的 jQuery(1.4.2 和 1.6+)并将一个置于 noConflict 模式。

    不要使用 Django 小部件并寻找其他东西来满足与 1.6+ 兼容的目的(在 Django 之外)。

【讨论】:

感谢您的回答。我会尝试同时做第一个选项。但我认为我们最终会选择第二种选择。 Not sure, but this commit might easily give it away, what to fix/override。虽然升级到 Djang1.6 肯定是比这更好的选择...

以上是关于使用 jquery 1.6 及更高版本会使 Django 的 FilteredSelectMutliple 无法使用的主要内容,如果未能解决你的问题,请参考以下文章

IndexedDB - iPad Safari(版本:10 及更高版本)jquery.bind 不起作用

Resig 的 jQuery 1.7 及更高版本的 Live Search redux?

安卓 2.2 到 1.6?

使用密钥库安卓。针对版本 18 及更高版本。必须使用已弃用的方法调用?

在 API 15 及更高版本中使用 PreferenceActivity

如何使用支持库 25.0.0 及更高版本获取片段()