我正在尝试使用以下命令禁用大表单上的重复提交点击:
$(document).ready(function () {
$('#loading').hide();
$('form').bind('submit', function (e) {
$('#loading').show();
$(this).find('input:submit').attr('disabled', 'disabled');
});
});
我也试过了:
$('input:submit').click(function () {
$(this).attr('disabled', true);
});
但是,在单击submit和禁用按钮之间有一个明显的延迟--几秒钟。
有没有办法消除这种延迟,或者至少确定原因?
发布于 2012-04-30 19:22:40
如果这是一个非常大的表单(忘记了UX),可以尝试使用ID的/属性选择器语法来查找submit按钮。它可能很难使用您正在使用的选择器在DOM中工作。
因为:submit是一个jQuery扩展,而不是CSS规范的一部分,所以使用:submit的查询不能利用原生DOM querySelectorAll()方法提供的性能提升。为了在现代浏览器中获得更好的性能,请改用type="submit“。
发布于 2012-04-30 19:16:36
不应该有...你在别的地方有问题。
这是一个没有延迟的live example
发布于 2012-04-30 19:54:52
克里斯,
使用这些内容覆盖提交,不是说它是完美的,而是给UI一个机会来收集它的想法:):
$('input:submit').click(function (e) {
var outerItem = this;
e.preventDefault();
$(this).attr('disabled', 'disabled');
setTimeout(function () { outerItem.submit(); }, 10);
return false;
});
免责声明;未经测试,因此买者自负..
https://stackoverflow.com/questions/10389262
复制