如何防止缓慢的表单用户体验破坏必需的属性?
我有一个看起来像这样的表格:
<form method="POST">
<label>Your name:
<input name="name" required>
</label>
<input type="submit" onclick="this.form.submit(); this.disabled=true; this.value='Sending…';">
</form>
表单的后端最多需要 10 秒才能响应(区块链!),因此禁用输入以防止多次重试。然而,它随后会破坏所需的验证,用户可以发送空的有效负载。
有什么建议可以使用 Vanilla 或者 VueJS 来防止这种情况发生吗?
非常感谢,
I have a form that looks like:
<form method="POST">
<label>Your name:
<input name="name" required>
</label>
<input type="submit" onclick="this.form.submit(); this.disabled=true; this.value='Sending…';">
</form>
The form's backend takes upto 10 seconds to respond (blockchain!), hence the disabled input to prevent multiple retries. However it then breaks the required validation and users can send in empty payloads.
Any tips how to prevent this using Vanilla or maybe VueJS?
Many thanks,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 Vuejs 你可以尝试:
@submit.prevent="action"
在表单标签中而不是onClick....
这是要点代码:https://gist.github.com/jiyuuki/e6f8f7bb67b48014223d1561119ac2fa
Using Vuejs you can try :
@submit.prevent="action"
in form tag instead ofonClick....
here's a gist code : https://gist.github.com/jiyuuki/e6f8f7bb67b48014223d1561119ac2fa
尝试使用如下所示的数据属性来控制按钮。
响应到达后将 isLoading 重置为 false。
Try to control the button with a data property like below.
Reset the isLoading to false after the response reaches.