如何在所有必填字段的表单中包含“*为必填字段”提示?

0 投票
3 回答
1030 浏览
提问于 2025-04-18 10:03

我正在使用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 这个模板。

点击这里查看模板

撰写回答