如何利用HTMX sync实现提交等待输入验证完成?
解决HTMX中提交请求等待验证请求完成的问题
你当前的hx-sync配置方向搞反了,应该给提交按钮添加同步规则,让它等待输入框的验证请求完成后再执行。
修改后的代码示例:
<script src="https://unpkg.com/htmx.org@1.8.4/dist/htmx.min.js"></script> <div id="table-section"> <input id="title" name="title" type="text" hx-get="https://httpbin.org/delay/5" hx-trigger="change" > </div> <br> <div id="filter-section"> <button id="submit-button" hx-include="[name='title']" hx-post="https://httpbin.org/post" hx-trigger="click" type="submit" hx-sync="#title:queue last" > Submit </button> </div>
关键说明:
- 给提交按钮设置
hx-sync="#title:queue last",含义是:当#title元素有未完成的HTMX请求时,将当前提交请求加入队列,等待前者完成后再执行。 queue last表示如果用户快速多次点击提交,只会保留最后一次请求,避免重复提交(若需求是保留第一次请求,可替换为queue first)。
进阶控制(可选):
如果需要在验证失败时阻止提交,可以在验证请求的响应中添加HX-Stop: true响应头,或者通过监听htmx:afterRequest事件判断验证结果,动态控制提交按钮的可用性。
内容的提问来源于stack exchange,提问作者NFern
相关产品推荐
相关产品推荐

