【发布时间】:2011-03-25 01:15:07
【问题描述】:
在不使用 Javascript 的情况下,Django 是否可以做到这一点?
【问题讨论】:
在不使用 Javascript 的情况下,Django 是否可以做到这一点?
【问题讨论】:
虽然没有通用的浏览器支持,但在技术上可以使用一些 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_field 和 id_hidden_field 共享父级时才有效,但理论上您可以设置文档结构,以便可以使用 CSS3 完成。如果你想要流畅的动画,technically possible,但不容易,也得不到很好的支持。
正如 pjmorse 所说,另一种选择是让他们选中该框,提交表单,然后让它返回并显示新字段。如果您需要帮助解决这个问题,请告诉我,这是一大堆蠕虫,我怀疑这就是您要找的东西。
大多数时候,当你想动态地做某事时,你想使用 javascript。
【讨论】:
您的意思是在选中复选框时显示一个可选字段?在没有 Javascript 的任何框架中,这几乎是不可能的。您的简单选项是使用 JS 根据复选框的状态显示可选字段,或者使复选框实际回发以重新加载显示可选字段的表单的不同版本(并使复选框的行为方式需要JS)。
我想也许可以用 CSS 来解决一些问题,但 JS 实际上会更可靠 - 你可能仍然需要它来更改容器视图的选择器。
【讨论】: