我在模态中使用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中调用验证自己,然后它可能会起作用,但是我认为这应该也能起作用...有人能找到答案吗?
答案 0 :(得分:0)
我相信我现在知道为什么这根本行不通。这是因为我实际上从未真正使用过WTForm验证。我使用了自动HTML5表单验证。这会自动验证字段,例如'required'被添加到html中。因此,我猜想form.validate()从未真正被调用过。
因此,我想唯一的解决方案(也要保持模式打开且不被关闭)是拦截提交并在jquery内调用validate。希望有一天能对某人有所帮助:)