擅长:python、mysql、java
<p>可能的解决方案如下:</p>
<ul>
<li><p>在客户端,将处理程序附加到表单中所有控件中的<code>blur</code>事件。</p></li>
<li><p>每次发生blur事件时,您都运行一个Javascript函数,该函数收集所有字段的值,然后将它们作为ajax POST请求提交。</p></li>
<li><p>在服务器上,处理这个ajax POST请求的view函数实例化Flask WTF表单,然后验证它。验证产生的任何错误都会收集到字典中,然后在JSON响应中发送回客户端。</p>
<p>例如,成功的验证可以返回以下JSON:</p>
<pre><code>{
"errors": {}
}
</code></pre>
<p>包含错误的响应可能是:</p>
<pre><code>{
"errors": {
"name": "This field is required",
"age": "Enter a numeric value between 0 and 99"
}
}
</code></pre></li>
<li><p>客户机获取这个JSON响应,并将所需的更改应用于DOM以公开错误。</p></li>
<li><p>如果在返回上一个模糊事件之前获得一个新的模糊事件,则可能需要中止挂起的ajax POST并使用更新的字段值启动一个新的模糊事件。一次只能有一个挂起的验证请求,以避免出现竞争条件。</p></li>
</ul>