烧瓶WTForm:在先前输入的基础上添加新字段



我有一个带有SelectField的表单,如果选择了其中的特定选项,我想显示一个不同的字段,用户可以在其中输入更多选项。

所以我的表单类看起来像

class QuestionForm(FlaskForm):
type = SelectField("Question Type")
options = SelectField("options", validators=[Optional()])

然后我的viewsquestions.py蓝图呈现出类似的形式

def question():
...
form = QuestionCreationForm()
form.type.choices = [
(type, type) for type in ["Type 1", "Type 2"]
]
form.options.choices = ["option 1", "option 2"]
if form.validate_on_submit():
...
else:
flash_form_errors(form)
return render_template(
"question.html",
form=form,
)

最后是html:

{% extends "base.html" %}
{% block page_title %}Questionnaire{% endblock %}
{% block content %}
...
<form method="POST" action="{{ url_for('questionnaire.questionnaire') }}">
<div id="type_selection" class="select is-medium is-expanded" onchange="WHAT HERE?">
{{ form.type }}
</div>
<div id="option_selection" class="select is-medium is-expanded DISPLAY NONE HERE?" onchange="WHAT HERE?">
{{ form.options }}
</div>
</form>
....
{% endblock %}
<script>
function myFunction() {
// ??
}
</script>

因此,我的猜测是对我的types表单字段进行onchange,并检查所选值是否为Type 2,以便更改要显示的options字段的呈现方式。然而,我没能把所有的部分都正确地粘在一起。

这是一个潜在的重复问题,但我不能在那里发表评论,提供的答案不够具体,不能帮助像我这样的新手。谢谢!烧瓶WTF形式:如果用户在SelectMultipleField中选择了特定选项,是否可以显示新字段?

为了不让大家对这个问题的答案感到模糊。您还需要一些javascript。youtube上有一个非常直接的教程,不超过10-15分钟,所以搜索烧瓶动态选择字段。希望它能帮助你。

最新更新