【问题标题】:Show additional data when checkbox is true Django当复选框为真时显示附加数据 Django
【发布时间】:2017-07-16 02:26:07
【问题描述】:

我正在使用 Django 进行我的第一个项目,顺便学习一下。目前我被困在项目的一部分,如果复选框被选中,我必须显示额外的数据。

长话短说,我的页面上必须有一个名为“汽车”的复选框,如果用户将复选框选中为 True,则应立即在此复选框下方显示选择汽车型号列表,而不会影响其他输入源在当前页面上。

有没有简单的方法来完成这个?感谢您的帮助。

/编辑

HTML 代码

        <p class="dhcp"> DHCP: {{ form.dhcp }} </p>
        <p class="collapse1 collapse"> IPv4 adresy: {{form.ipv4_adress }} </p>

        <p class="dhcpv6"> DHCPv6: {{ form.dhcpv6 }} </p>
        <p class="collapse2 collapse"> IPv6 adresy: {{form.ipv6_adress }} </p>

JS代码

 $(document).ready(function() {

     $(".dhcp").click(function(event) {
         $(".collapse1").fadeToggle().delay(100);
     });

     $(".dhcpv6").click(function(event) {
         $(".collapse2").fadeToggle().delay(100);
     });
 })

它只是它的一部分,它现在相当“大”并且因为是由 django 形式生成的,所以什么都不说。现在的主要问题是,如果我单击与复选框相同的行,它会触发显示数据的操作。

【问题讨论】:

  • 如果你希望它是动态的,你需要使用 javascript。
  • 这是 Django 特有的,还是只是一个简单的 javascript 前端问题?
  • 老实说我还没有前端/后端经验,这是我的暑期实习生职位,我的老板刚刚有一周的空闲时间,所以我也不能问任何有能力的人。这是否意味着不可能通过 django 表单来完成它?我现在的工作应该是工作形式,所以我想我没有禁止使用javascript,但他也没有提到。
  • 你需要更详细的解释。如果您只想让它在页面加载时显示,那么您只需要执行{% if whatever %}
  • 我目前正在阅读它,但用户必须先提交他的选择。我将编辑问题以使其尽可能清晰。

标签: python django checkbox


【解决方案1】:

看看这个 JS Fiddle 。它是一个简单的 JS 解决方案,带有 fadeToggle 来解决您的问题。 100 的延迟是可选的,但它使洞的东西更加优雅,尽管这与您的“应该立即显示”相冲突;)

<input class="collapsed" type="checkbox">Cars
<div class="collapse2 collapse" style="display:none;">
   <li>car hello</li>
   <li>car lala</li>
   <li>car 1</li>
</div>

$(".collapsed").click(function(event){
    $(".collapse2").fadeToggle().delay(100);
})

如果有多个这样的复选框,您可能必须在 JS 中使用 this 关键字。

如果不发表评论,那应该可以解决问题。

【讨论】:

  • @FilipM 很乐意提供帮助,请记得在有人花时间回答您的问题时进行互动。您不必投票或选择答案,但感谢一个简单的“谢谢”:)
  • 完全理解,但我之前并没有真正尝试过,所以不想只发空谢谢,无论如何再次感谢您的帮助:-)
  • 我发现它实际上并不能完全正常工作,即使单击与位于复选框的同一行也会触发操作,有什么办法可以解决这个问题吗?
  • jsfiddle.net/4zg96e5a/14 检查这个 JSfiddle。在这里,您需要单击复选框。我在答案中发布的 JSFiddle 不同,我添加了一个标签。使用标签,您可以单击同一行并对其进行检查。您可以在 JSFiddle 中发布您的代码并将链接发送给我,我会看到我能做什么@FilipM
  • 两者有什么区别?不能只看到不同的字符,我的 html 主要是由 django 表单生成的,所以我不可能将它发布到 jsfiddle 中。我该如何解决这个问题?你说的标签是什么意思?
猜你喜欢
  • 2012-05-18
  • 1970-01-01
  • 2017-06-20
  • 1970-01-01
  • 2022-01-16
  • 2016-02-23
  • 1970-01-01
  • 2023-03-19
  • 2016-05-19
相关资源
最近更新 更多