gpt4 book ai didi

javascript - 如何根据 Django 下拉菜单中的选择显示和隐藏表单字段

转载 作者:行者123 更新时间:2023-12-02 18:47:25 25 4
gpt4 key购买 nike

我有一个关于如何根据 Django 中父字段的选择有条件隐藏或显示字段的问题。

**更新:我能够通过在 JavaScript 中定义一个函数来实现此功能,该功能已使用一些简单的 HTML 代码进行了测试。但是,由于我的输入表是由 Django 创建的,谁能告诉我如何在 Django 'onchange' 中调用这个函数? **

最终更新:我认为使用 jQuery 来做到这一点更容易。 jQuery: Conditional show an element based on drop down box selection

Javascript:解释: 1. 在做出任何选择之前,只能看到一个下拉菜单“申请方式” 2. 如果从父框中选择“空中喷雾”,则会出现一个新的下拉菜单“空中尺寸距离” 3. 如果在父框中选择“地面喷洒”,则需要输入另一个下拉列表“地面喷洒类型”

<script type="text/javascript">
function display(obj,id1,id2) {
txt = obj.options[obj.selectedIndex].value;
document.getElementById(id1).style.display = 'none';
document.getElementById(id2).style.display = 'none';

if ( txt.match(id1) ) {document.getElementById(id1).style.display = 'block';}
if ( txt.match(id2) ) {document.getElementById(id2).style.display = 'block';}
</script>

<table>
<tbody align="center">
<tr><th>Application method:</th>
<td><select onchange="display(this,'A','B')" name="method" id="id_method">
<option value="">Pick a method</option>
<option value="A">Aerial Spray</option>
<option value="B">Ground Spray</option>
</select></td></tr></tbody>

<tbody id="A" align="center" style="display: none;">
<tr><th><label for="id_aerial_size_dist">Aerial Size Dist:</label></th><td><select select name="aerial_size_dist" id="id_aerial_size_dist">
<option value="" selected="selected">Pick first</option>
<option value="A1">Very Fine to Fine</option>
<option value="A2">Fine to Medium (EFED Default)</option>
</select></td></tr>
</tr>
</tbody>

<tbody id="B" align="center" style="display: none;">
<tr><th><label for="id_spray_type">Ground spray type:</label></th><td><select name="spray_type" id="id_spray_type">
<option value="B1" selected="selected">Low Boom Ground Sprayer (20 Inches or Less)</option>
<option value="B2">High Boom Ground Sprayer (20 to 50 Inches: EFED Default)</option>
</select></td></tr></tbody></table>

Django 代码,现在不起作用。它需要有关所有定义的函数“显示”的帮助。

更新,添加mark_safe后,代码可以运行。

class GENEECInp(forms.Form):
application_method = forms.ChoiceField(required=True, choices=applicationmethod_CHOICES, initial='Aerial Spray',
widget=forms.Select(attrs={'onchange':mark_safe("display(this,'A','B','C','D');")})

最佳答案

您将需要一些自定义 JavaScript 来隐藏或取消隐藏相应的字段。这个小部件中有 JavaScript 吗?

关于javascript - 如何根据 Django 下拉菜单中的选择显示和隐藏表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10144085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com