我在做server side sorting in datatable plugin。加载数据需要4-5秒,同时如果用户点击其他标题,它将再次触发AJAX调用。
当服务器端数据仍处于处理状态时,如何限制用户?是否有任何初始功能,我可以检查自定义标志状态&停止可排序直到处理完成?
答案 0 :(得分:2)
首次收到请求时,请禁用该按钮。然后在服务器完成时触发的回调函数中启用该按钮。你就是这样做的,但如果你想要代码,那就给代码。
答案 1 :(得分:1)
快速提示:
async: false
答案 2 :(得分:0)
如果内存正确地为我服务,jquery有3个函数,如ajaxStart()
,ajaxError()
和ajaxComplete()
。
只需在ajaxStart时禁用整个网格/网格标题,并在ajaxError(可以执行某些错误处理)或ajaxComplete时再次启用它。
答案 3 :(得分:-1)
有多种方法可以做到这一点,最简单的方法取决于您的代码。
$(document).ajaxSend( function(){
$('controls_selector').hide();
}).ajaxComplete( function(){
$('controls_selector').show();
});
这样做会有效,但这会在页面上的任何ajax事件期间禁用它们。该文档描述了如何使用回调函数的参数来确定ajax调用的性质并有选择地显示/隐藏这些元素。
通过这种方式,您可以避免深入挖掘并使用插件代码。
关键点似乎是你不想隐藏元素,你想要一种暂时禁用事件处理程序的方法,因为它们被埋在数据表中你不想修改它们。我会做以下事情:
var tableheadclone = $('#mytableid thead>tr>th').clone(true);
然后将该克隆写入其他地方并将其隐藏(或将其保存在全局js变量中)。然后你可以使用
$('#mytableid thead>tr>th').unbind('click');
删除事件处理程序。
您可以使用replaceWith()
jQuery函数重新启动事件处理程序。