gpt4 book ai didi

javascript - Flask WTForms SelectMultipleField 限制最大选择数

转载 作者:行者123 更新时间:2023-12-01 02:21:37 25 4
gpt4 key购买 nike

现在我正在使用 Flask 构建一个 web 应用程序,包括一些 WTForms。其中之一是一个 list ,人们可以从多个选项中进行选择(因此是 SelectMultipleField)。现在我想确保人们只能选择最大数量的选项(例如 3 个选项中的 2 个),如果他们想首先选择更多选项,则必须取消选择其他选项之一。我认为它可能需要进行一些验证,但我真的不知道如何做到这一点......非常感谢任何帮助!这是我的 forms.py 代码

class MultiCheckboxField(SelectMultipleField):
option_widget = widgets.CheckboxInput()
widget = widgets.ListWidget(prefix_label = False)

class ChecklisteForm(FlaskForm):
list_of_files = ['politiek', 'economie', 'sport']
files = [(x, x) for x in list_of_files]
example = MultiCheckboxField('Label', choices=files)
submit = SubmitField('Wijzigen')

这是我的 html 模板中的代码

<form action="" method = "post">
{{ form.hidden_tag() }}
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div class="col-lg-4">
<div class="button-group">
<span class="kiezen_informatie">
<button type="button" class="btn btn-info btn-large dropdown-toggle" data-toggle="dropdown">Kies kategorie </span> <span class="caret"></span></button>
<ul class="dropdown-menu text-center">
<li><a href = "#">{{form.example(class = "list-unstyled")}}</a></li>
<li><a href = "#"> {{form.submit(class = "btn btn-info")}}</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>

我认为这也可能与包含一些 javascript 有关?但如果有什么办法可以避免我会很高兴:)

最佳答案

您当然可以使用一些 Javascript 在客户端验证这一点,但您还希望在服务器端验证这一点,以确保用户不会避免 Javascript 验证并提交他们不应该提交的数据。

您可以在表单中定义自定义validate方法:

class ChecklisteForm(FlaskForm):                                                
list_of_files = ['politiek', 'economie', 'sport']
files = [(x, x) for x in list_of_files]
example = MultiCheckboxField('Label', choices=files)
submit = SubmitField('Wijzigen')

def validate(self):

rv = FlaskForm.validate(self)

if not rv:
return False

print(self.example.data)

if len(self.example.data) > 2:
self.example.errors.append('Please select no more than 2 items')
return False

return True

并在您的 HTML 模板中:

    {% for key in form.errors %}                                            
{% for error in form.errors[key] %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
{% endfor %}

关于javascript - Flask WTForms SelectMultipleField 限制最大选择数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49171039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com