1

我正在做一个需要我使用 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。

到目前为止我尝试/想到的解决这个问题的选项是:

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

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

    • 这听起来不错,但我尝试过但仍然失败
  3. 将验证引擎更改为其他内容

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

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

4

1 回答 1

0

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

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

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

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

于 2012-02-06T15:38:00.070 回答