我有一个脚本可以禁用按钮输入控件,清空表体,然后(在AJAX调用之后)重新填充它。一切正常但有时表中有很多行,因此浏览器(IE)需要一段时间才能清空并重新填充。奇怪的是,当行被清空时,按钮仍然显示为启用,但是如果我在禁用按钮和清空按钮之间发出警报,则按钮正常工作,在警报出现之前明显禁用。有没有什么办法可以在资源消耗表清空过程/命令开始之前让按钮更新? 谢谢 MH
代码示例,根据要求(但它并不复杂,所以我最初没有包含它)
$('#Search').attr('disabled', true);
$('#StatusSpan').empty();
$('#DisplayTBody').empty();
然后我执行我的AJAX调用,重新启用按钮并重新填充表格 - 如果您将该位代码附加到按钮并弹出1500行表格。
正如我所提到的,通常情况下这很快并且不是问题,但如果表中有1500行需要一段时间才能清除,但“搜索”按钮不会更新屏幕,但是如果我在.attr之后发出警报(“禁用”行,当警报框启动时按钮会明显更新,但如果没有,则按钮在表格清除之后不会明显禁用(大约是3或4)只有1500行的秒数,它只是处于下行/“中间按下”状态。浏览器渲染表变化的时间我没有问题,这只是生活,但我需要用户看到可见的反馈,以便他们知道搜索已经开始。
------进一步编辑 这里有一些可以重现问题的代码。
<input id="Search" type="button" value="Search" />
<table>
<tbody id="DisplayTBody">
<tr>
<td>Data</td><td>Data</td><td>Data</td><td>Data</td>
</tr>
</tbody>
</table>
复制表格行直到你有1500行,然后这是脚本
<script type="text/javascript">
$(document).ready(function() {
$('#Search').click(function() {
$('#Search').attr('disabled', true);
//alert('l');
$('#DisplayTBody').empty();
});
});
</script>
如果取消注释警报,您应该能够看到问题。这种情况发生在IE8和FF中,但我的主要问题是IE8。在该示例中,由于表非常简单,清除行不需要很长时间,但使用更复杂的表需要更长时间,因此问题更加明显。
答案 0 :(得分:0)
也许会这样做?
$('#Search').attr('disabled', true);
setTimeout( function(){
$('#StatusSpan').empty();
$('#DisplayTBody').empty();
}, 100);