如何在所有必填字段的表单中包含“*为必填字段”提示?
我正在使用django-crispy-forms,并设置了CRISPY_TEMPLATE_PACK = 'bootstrap3'
。我的模板看起来是这样的(这是一个注册表单的例子,但我有很多表单在我的模板中):
{% load crispy_forms_tags %}
<h1>Sign up</h1>
<form action="/accounts/signup/" method="POST" role="form">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-primary">Sing up</button>
</form>
在生成的页面中,必填字段旁边会有一个*号,表示这些字段是必须填写的,但没有任何信息解释这个*号的意思。
对我来说,我的用户有时候对技术不太了解,所以他们可能不知道这个*号代表什么。我想在所有必填字段的表单顶部显示一条* required field.
的信息。
我可以在每个表单的开头加一行<p>* required field.</p>
,但我想知道有没有更优雅和简洁的方法来实现这个。
谢谢!
3 个回答
1
根据django crispy forms的文档:
你需要重写字段模板,这是你唯一的选择,除非你使用一些CSS的小技巧(比如在星号元素前后加一些东西)。
另一个选择是使用HTML的crispy forms元素,在你的表单顶部添加一个提示:
HTML('<strong>Fields marked with * are required</strong>')
1
一种解决办法是,在每个表单中添加 <p class="req_legend" style="display: none;">* 必填字段.</p>,然后再加一段 JavaScript 代码,当发现有必填字段时,就改变它的显示状态。下面是一个 jQuery 的例子:
$(document).ready(function() {
if ($('.requiredField').length > 0) {
$('p.req_legend').show();
}
});
或者你可以完全使用 JavaScript,只有在找到必填字段时才添加 <p> 元素。你可以在表单的 Media 类中添加这段 JavaScript 代码来实现。
1
你可以用自己定制的模板来替换掉 uni_form.html
这个模板。