Javascript 在AJAX响应之前防止单击
我正在用ajax提交一个文件 在我从请求中得到答案之前,我会显示一个模态窗口,但是如果我的用户在得到答案之前单击模态,AJAX请求就会被取消。我正在寻找一种方法来防止这种情况 我习惯于用ajax发帖 完整代码如下: 谢谢Javascript 在AJAX响应之前防止单击,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在用ajax提交一个文件 在我从请求中得到答案之前,我会显示一个模态窗口,但是如果我的用户在得到答案之前单击模态,AJAX请求就会被取消。我正在寻找一种方法来防止这种情况 我习惯于用ajax发帖 完整代码如下: 谢谢 $('form').on('submit', function (e) { // Show loading modal popup $("#dialog-modal").dialog({ height: 140, modal: true }); $(".ui-
$('form').on('submit', function (e) {
// Show loading modal popup
$("#dialog-modal").dialog({
height: 140,
modal: true
});
$(".ui-dialog-titlebar").hide();
e.preventDefault();
// prevent native submit
$(this).ajaxSubmit({
url: '/unitary/import_ajax',
type: 'post',
dataType: 'json',
iframe: true,
success: function (data) {
$('#dialog-modal').hide();
if (data == 'error') {
alert('error, invalid file');
} else {
var event = jQuery.Event;
submitForm(event, data);
}
}
})
});
function submitForm(event, data) {
//Do some stuff
}
$('form')。关闭('submit')。打开('submit',函数(e){
//显示加载模式弹出窗口
$(“#对话框模式”).dialog({
身高:140,
莫代尔:对
});
我还没试过,但看看它是否有效,只需添加
关闭('submit')
我尝试了所有方法,但都没有成功
请记住,我使用的是启用iframe选项的ajaxSubmit()(与IE兼容)
显然,点击模式实际上是点击iframe开关,导致POST ajax请求被取消
我决定在没有jquery的情况下自己重新创建一个模式
var loading = $('<div>').prop('id', 'loading');
loading.html('<div id="loading_box"></div><span id="loading_txt"><span id="loading_txt">Import...</span>');
$('form').on('submit', function(e) {
loading.appendTo('body');
// disable left click
var event = $(document).click(function(e) {
e.stopPropagation();
e.preventDefault();
e.stopImmediatePropagation();
});
// disable right click
$(document).bind('contextmenu', function(e) {
e.stopPropagation();
e.preventDefault();
e.stopImmediatePropagation();
});
$(this).ajaxSubmit({
[...]
var-loading=$('').prop('id','loading');
加载.html('Import…');
$('form')。关于('submit',函数(e){
加载。附加到(“主体”);
//禁用左键单击
var事件=$(文档)。单击(函数(e){
e、 停止传播();
e、 预防默认值();
e、 停止即时复制();
});
//禁用右键单击
$(document).bind('contextmenu',函数(e){
e、 停止传播();
e、 预防默认值();
e、 停止即时复制();
});
$(此).ajaxSubmit({
[...]
一个简单的想法:设置一个css类,例如:。无交互{指针事件:无;}
默认情况下在对话框上,并在ajax成功处理程序中删除它。或者在ajax调用进行过程中取消单击事件,方法是使用绑定单击到模式窗口,然后在ajax成功时解除绑定。首先认为您需要html格式设置,然后测试@Nicolaeriu我尝试了这两种方法,没有成功…谢谢,但我没有什么改变。其实,这位@Niang的目的是什么?你能解释一下吗?