根据之前的输入过滤 html 表单选项

问题描述 投票:0回答:2

在这个问题之前,我会说我不是在这里寻找代码,只是在我付出巨大努力之前表明我的方法是否正确。这就是为什么我还没有尝试自己编写代码。

我正在开发一个 django 站点,其中包含先例数据库。我想让某些用户使用通用 CreateView 和使用脆表单构建的 ModelForm 上传新决策。我希望通过从 html

<option>
字段中删除不相关的选项,使用户尽可能轻松地完成此操作。我关心的表格部分看起来有点像:

<select class="input-xlarge select" id="id_decisions" name="clauses">
    <option value="" selected="selected">---------</option>
    <option value="1">2012 Decisions</option>
    <option value="2">2011 Decisions</option>
    ...
</select>
<select class="input-xlarge select" id="id_clauses" name="clauses">
    <option value="" selected="selected">---------</option>
    <option value="1">2012 clause 1</option>
    <option value="2">2012 clause 2</option>
    <option value="3">2011 clause 1</option>
    ...
</select>

当有人从下拉列表中选择

2012 decisions
时,我想过滤掉“条款”选项字段中不显示“2012”的所有选项。我怀疑这意味着编写一个类似于 this Question 中的答案的 javascript 过滤器,但我不知道任何 javascript,因此并不真正理解该代码在做什么。在我承诺学习足够的 javascript 以确保我能产生一个好的解决方案之前,我只想确定我对这是如何完成的怀疑是正确的。是吗?我是否缺少一种使用 Django 或 Cripy-forms 在 Python 中执行此操作的明显方法?

javascript django forms django-crispy-forms
2个回答
0
投票

如果您希望在不提交表单和刷新页面的情况下过滤下拉列表,那么唯一的方法是使用Javascript。这不是 Django 的限制:这就是 Web 应用程序的工作方式。


0
投票

只需使用这个库即可

选择关系 JS

“select-relations”库是一个轻量级 JavaScript 工具,可根据相关选择元素的选定值动态过滤 HTML 选择元素中的选项,提供高效的多父支持和内置重置功能。

https://github.com/deirvlon/select-relations

© www.soinside.com 2019 - 2024. All rights reserved.