代码之家  ›  专栏  ›  技术社区  ›  Bob de Graaf

未调用FlaskForm modal submit自定义验证器

  •  0
  • Bob de Graaf  · 技术社区  · 6 年前

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

    在页脚内:

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

    这意味着当用户点击Save时,它会立即验证并调用“action”url。这很好,如果其中一个字段没有正确验证,它会在字段上方显示一个很好的弹出窗口。

    但是,对于一个字段,我一直试图设置一个自定义验证器:

    validators=[InputRequired(), validate_function]
    

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

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

    然后我自己的自定义验证器函数被完美地调用。但我希望它也被称为简单点击提交的模态形式。

    我知道我可以拦截提交并在JQuery中调用validate myself,然后它可能会工作,但我认为这应该也能工作。。。有人知道答案吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Bob de Graaf    6 年前

    啊,我相信我现在知道了为什么这根本不起作用。因为我从来没有真正使用过WTForm验证。我使用了自动HTML5表单验证。这将自动验证在html中添加了“required”之类的字段。所以我想在我的例子中从来没有真正调用过form.validate()。

    因此,我想唯一的解决方案(同时保持模式的开放性,而不是取消)是拦截jquery中的submit和call validate。希望有一天能帮上忙:)