在 jQuery 中,当我们执行每个 Ajax 帖子时,有没有办法自动屏蔽整个页面(以防止用户输入或重复提交......)?我看到了这个插件:jQuery-blockUI ( http://www.malsup.com/jquery/block/ ) 但我们仍然必须为每个 Ajax 帖子手动屏蔽/取消屏蔽。
正如我在 ExtJS 中所知道的,我们可以通过实现“beforeAction”函数来控制它,因为这个事件将在表单上的任何操作之前被触发,但在 jQuery 中我没有找到类似的东西。
你能给我一个解决方案吗?非常感谢。
问问题
6094 次
2 回答
5
自己做这件事不会太难。
HTML
<body>
<div id="mask"></div>
<!-- Everything else -->
</body>
CSS
#mask{
position:fixed;
width:100%;
height:100%;
background: /* You can make this slightly transparent black rgba(0,0,0,.3); or transparent */;
top:0;
left:0;
display:none;
}
JAVASCRIPT
var isPageMasked = false,
mask = $('#mask');
var maskPage = function(){
if(isPageMasked){
mask.hide();
} else {
mask.show();
}
isPageMasked = !isPageMasked;
};
然后,当您想要屏蔽和取消屏蔽页面时,您只需调用 maskPage() 即可。
于 2012-11-01T17:03:27.570 回答
3
您可以只使用 beforeSend 和 complete 功能
$.ajax({
beforeSend: function() {
//Mask page
},
complete: function(){
//remove Mask
}
}
});
于 2012-11-01T17:10:43.287 回答