【问题标题】:How do I reveal an optional field in a Django form, when a checkbox is checked?选中复选框时,如何在 Django 表单中显示可选字段?
【发布时间】:2011-03-25 01:15:07
【问题描述】:

在不使用 Javascript 的情况下,Django 是否可以做到这一点?

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    虽然没有通用的浏览器支持,但在技术上可以使用一些 CSS3 技术。

    您的字段将有一个 id,具体取决于表单的前缀(默认为“id”,创建表单时可配置),因此您可以使用标识符 #id_field_name 在 css 中设置表单元素的样式。然后您可以使用一些 CSS3 Selectors 来访问您的字段,如下所示:

    #id_checkbox_field ~ #id_hidden_field {display: none; }
    #id_checkbox_field[checked] ~ #id_hidden_field { display: block; }
    

    当然,您的选择器会根据您的文档结构而有所不同。 tilda 仅在 id_checkbox_fieldid_hidden_field 共享父级时才有效,但理论上您可以设置文档结构,以便可以使用 CSS3 完成。如果你想要流畅的动画,technically possible,但不容易,也得不到很好的支持。

    正如 pjmorse 所说,另一种选择是让他们选中该框,提交表单,然后让它返回并显示新字段。如果您需要帮助解决这个问题,请告诉我,这是一大堆蠕虫,我怀疑这就是您要找的东西。

    大多数时候,当你想动态地做某事时,你想使用 javascript。

    【讨论】:

    • 感谢您的回答。提交表格不是一种选择。您确认我没有忽略 Django 选项。为了远离 javascript,不是因为我害怕它,我会跳过复选框并显示一个可选字段。
    • 好主意。像 Django 这样的框架是用于服务器端代码的,一旦客户端得到它就根本不会影响页面。 Django 仅帮助您响应请求,例如页面提交或异步 javascript 和 xml (ajax)。如果您希望页面加载后发生任何事情,您需要使用 javascript 或等到 CSS3 有更好的支持。 :)
    【解决方案2】:

    您的意思是在选中复选框时显示一个可选字段?在没有 Javascript 的任何框架中,这几乎是不可能的。您的简单选项是使用 JS 根据复选框的状态显示可选字段,或者使复选框实际回发以重新加载显示可选字段的表单的不同版本(并使复选框的行为方式需要JS)。

    我想也许可以用 CSS 来解决一些问题,但 JS 实际上会更可靠 - 你可能仍然需要它来更改容器视图的选择器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 2022-01-05
      • 2016-09-06
      • 1970-01-01
      相关资源
      最近更新 更多