javascript - 禁用按钮以避免多个表单提交
问题描述
我有一个网络表单,我注意到它会生成相同数据的多次提交(间隔约 100 毫秒)。根据我的研究,表单提交后禁用按钮是要做的几件事之一。我有以下两种禁用表单按钮的方法:
Method 1:
$('form#my-form').submit(function(e) {
$(this).find('button').prop("disabled",true);
return true;
});
Method 2:
$('form#my-form').submit(function(e) {
$(this).find('button').attr('onclick',"return false;");
});
让我们只关注在浏览器中提交表单时禁用按钮。哪种方法更好?还是其他更好的方法?有什么影响吗?我知道如果表单有多个用于不同事物的按钮,则方法 1 无法将单击哪个按钮的信息传递给后端。
解决方案
试试看,我认为延迟可以让你的工作变得轻松。
$('#id').on('click',function(){
// let a common class(disable-btn) for each button which should be disabled for on second
$('.disable-btn').prop('disabled',true);
setTimeout(function(){
// enable click after 1 second
$('.disable-btn').prop('disabled',false);
},1000); // 1 second delay
});
推荐阅读
- python - OpenCV中是否有任何函数可以计算两个图像的每块运动矢量?
- flutter - 当我运行我的项目时遇到这个问题有什么解决方案吗?
- python - Python 时间数据与格式 %B %d, %Y 不匹配
- momentjs - Moment.js 获取最近 28 天
- javascript - Discord.js 向用户发送 DM 的问题
- ionic4 - 如何更改 ionic 5 中警报按钮的 CSS?
- git - 从/在 git azure 中获取存储库统计信息/信息
- html - 在网格中的所有列上设置填充
- c++ - 忽略从文件中读取的前导空格
- c - 从掩码长度生成子网掩码(uint32_t 或 s_addr)(用于 ipv4 和 ipv6 地址)