可能的解决方案如下:
在客户端,您将
blur
窗体的所有控件中的事件附加到处理程序。每次模糊事件发生时,您都运行一个Javascript函数,该函数收集所有字段的值,然后将其作为ajax POST请求提交。
在服务器上,处理此Ajax POST请求的view函数实例化Flask-WTF表单,然后对其进行验证。验证产生的任何错误都将收集到字典中,然后以JSON响应的形式发送回客户端。
例如,成功的验证可以返回以下JSON:
{ "errors": {}}包含错误的响应可能是:
{ "errors": { "name": "This field is required", "age": "Enter a numeric value between 0 and 99" }}客户端获取此JSON响应,并将所需的更改应用于DOM以暴露错误。
如果在返回前一个模糊事件之前收到了一个新的模糊事件,则可能要中止挂起的ajax POST,并使用更新的字段值开始一个新的模糊事件。一次只能有一个待处理的验证请求,以避免出现竞争情况。



