如何解决单击后禁用提交按钮将阻止在Chrome中提交表单
最近,至少对于我来说,我遇到了一个有趣的错误。我们已经制作了JS,如果表单中没有验证错误,可以阻止提交按钮,以防止多表单发送等。这在Firefox中可以正常工作。但是,这在chrome中是行不通的。
这是我验证表单并在一切正常的情况下禁用按钮的逻辑。
$('body').on('click',"button[type='submit']",function (evt) {
MessageBox.RemoveAllBoxes();
if (!CustomDynamicValidation()) {
//Something went wrong
return false;
}
//Everything is ok. Disable button and send
$(this).attr('disabled',true);
return true;
});
此功能适用于Firefox。单击后禁用按钮,并且发送了表单。在Chrome中,按钮已被禁用,但未发送表格。
解决方法
我认为,如果我在“超时”中设置了禁用功能,则即使在Chrome中也可以正常使用。喜欢:
$('body').on('click',"button[type='submit']",function (evt) {
var submitButton = $(this);
MessageBox.RemoveAllBoxes();
if (!CustomDynamicValidation()) {
//Something went wrong
return false;
}
//Everything is ok. Disable button and send
setTimeout(function () { $(button).attr('disabled',true); },0);
return true;
});
我的问题是为什么会这样?为什么即使Chrome的延迟为零也需要超时?可选地,有没有更优雅的解决方案呢?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。