Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AJAX响应之前防止单击_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在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-

我正在用ajax提交一个文件

在我从请求中得到答案之前,我会显示一个模态窗口,但是如果我的用户在得到答案之前单击模态,AJAX请求就会被取消。我正在寻找一种方法来防止这种情况

我习惯于用ajax发帖

完整代码如下:

谢谢

$('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的目的是什么?你能解释一下吗?