使用Django、CSS和Javascript使HTML表单文本字段依赖于复选框的选择
Make HTML form text field presence dependent on checkbox selection using Django, CSS, and Javascript
我有一个Django表单,我想它最初隐藏一个文本字段,直到用户选择一个复选框。
我是Django和web应用程序的新手,所以我不知道我在找什么或者它叫什么。我找了半天也没有找到。任何指针都会有帮助。
解决方案:
谢谢makaveli的帮助。下面是我的第一次尝试:
forms.py
from django import forms
from .models import MyModel
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = [
'my_checkbox',
'my_form_input',
]
index . html
{% load static %}
<html>
<head>
<link rel="stylesheet" type="text/css" href="{% static 'my_app/style.css' %}">
<title>My Django Form</title>
</head>
<body>
<form method="post">{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
<script src="{% static 'my_app/script.js' %}"></script>
</body>
</html>
style.css
#id_my_form_input {
display : none
}
script.js
function my_toggle_func() {
if (this.checked) {
document.getElementById("my_form_input").style.display = 'block';
} else {
document.getElementById("my_form_input").style.display = 'none';
}
}
document.getElementById("my_checkbox").onclick = my_toggle_func;
你正在寻找Javascript而不是Django。因为Django只做后端服务和逻辑,所以它不能直接处理前端发生的任何变化。如果您在此过程中根本不需要与后端交互,您可以简单地让javascript(也许是jQuery)侦听复选框状态的变化,如果它们发生变化,则使表单字段可见。表单字段可以用Django不可见地预渲染(即使用<input type="hidden">
)。然后可以使用Javascript删除隐藏状态。
如果你确实需要与后端交互,那么你会想要做基本相同的事情,除了你用Django渲染页面,监听复选框的变化,如果发生变化,你发送一个AJAX请求到Django视图,处理该请求并返回你需要的数据(例如,从数据库或一些不应该在前端的复杂计算)。为了返回数据,你可以使用Django的JsonResponse
。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 使用jquery将输入字段转换为文本
- 如何从查询字符串中的输入字段发回文本
- 表单输入字段随着溢出的文本而增长
- 使用单个文本框向多个字段添加严格搜索
- 使用javascript提交表单并从字段/单选框/复选框/文本区域获取数据
- 使用jQuery的输入字段文本换行
- 向使用jQuery加载DOM后添加的字段添加不受限制的文本输入DatePickers
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 如何根据文本长度立即显示和隐藏字段?-JQuery
- 当输入字段(文本框)有值时,选中/取消选中复选框
- 重置时输入字段文本css
- 将输入字段文本放入变量中并将其用于 jquery JSON get 请求
- 在 html 输入字段 (文本框) 中插入 javascript (jquery) 变量
- 搜索字段文本没有't在FF 3.6中显示
- 主干集合url操作与输入字段文本
- 如何大写输入字段文本的第一个字母,而键入javascript
- 如何使用angularjs在同一字段中键入时动态格式化输入字段文本
- 如何将输入字段(文本框)添加到使用jQuery动态创建的表中