FlaskForm模态提交自定义验证器未称为

时间:2018-12-19 13:54:02

标签: jquery validation flask flask-wtforms wtforms

我在模态中使用FlaskForm。模态设置如下:

<form id="form_id" action="action" method="post" enctype="multipart/form-data">

在页脚内:

<button class="btn btn-primary btn-ok" form="form_id">Save</button>

这意味着当用户点击“保存”时,它将立即验证并调用“操作” URL。效果很好,如果其中一个字段未正确验证,则会在该字段上方显示一个漂亮的弹出窗口。

但是,我一直在尝试为一个字段设置自定义验证器:

validators=[InputRequired(), validate_function]

但是我的问题是,使用自动提交功能时不会调用此函数!似乎它仅验证现有的验证器,例如“ InputRequired()”,但忽略了我的自定义验证器。

我发现自己是否可以对其进行验证,例如,当调用action方法并执行此操作时:

form = TestForm(obj=request.form)
form.validate():

然后完美地调用了我自己的自定义验证器函数。但是,我希望在模式表单上点按“提交”时也可以调用它。

我知道我可以拦截提交并在JQuery中调用验证自己,然后它可能会起作用,但是我认为这应该也能起作用...有人能找到答案吗?

1 个答案:

答案 0 :(得分:0)

我相信我现在知道为什么这根本行不通。这是因为我实际上从未真正使用过WTForm验证。我使用了自动HTML5表单验证。这会自动验证字段,例如'required'被添加到html中。因此,我猜想form.validate()从未真正被调用过。

因此,我想唯一的解决方案(也要保持模式打开且不被关闭)是拦截提交并在jquery内调用validate。希望有一天能对某人有所帮助:)