使用 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?
使用密钥库安卓。针对版本 18 及更高版本。必须使用已弃用的方法调用?