Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
Php 如何在ajax请求过程中禁用拖放和浏览事件?_Php_Jquery_Ajax_File Upload_Drag And Drop - Fatal编程技术网

Php 如何在ajax请求过程中禁用拖放和浏览事件?

Php 如何在ajax请求过程中禁用拖放和浏览事件?,php,jquery,ajax,file-upload,drag-and-drop,Php,Jquery,Ajax,File Upload,Drag And Drop,我想防止用户在处理前一个ajax请求时停止选择或拖放 我怎样才能做到这一点 下面是代码js代码: #drag是拖放区域的div id $( '#drag ' ).bind( 'dragover',function(event) { event.stopPropagation(); event.preventDefault(); }); $( '#drag ' ).bind( 'drop',function(event) { event.stopPropagatio

我想防止用户在处理前一个ajax请求时停止选择或拖放

我怎样才能做到这一点

下面是代码js代码:

#drag是拖放区域的div id

$( '#drag ' ).bind( 'dragover',function(event) {
  event.stopPropagation();  
  event.preventDefault();   
 });

$( '#drag ' ).bind( 'drop',function(event) {
     event.stopPropagation();   
     event.preventDefault();
     if( upfiles == 0 )
     {
         upfiles = event.originalEvent.dataTransfer.files;
         console.dir(upfiles);
         upfiles = Array.prototype.slice.call(upfiles, 0);
      }
      else {
      if(confirm( "Drop: Do you want to clear files selected already?" ) == true) {
          upfiles = event.originalEvent.dataTransfer.files;
          upfiles = Array.prototype.slice.call(upfiles, 0);
          $('#fileToUpload').val('');
      }
      else
          return;
      }
      $( "#fileToUpload" ).trigger( 'change' );
        });
点击上传按钮后:

$("#upload_btn").click( function() {
 if ( upfiles ) {
 $( '#fileToUpload' ).trigger('upload'); // trigger the first 'upload' - custom event.
  $(this).prop("disabled", true);
  }
});
以下是ajax请求:

$( '#container' ).on( 'upload', '#fileToUpload' , function( ) {
   if ( typeof upfiles[count] === 'undefined') return false;
    var data = new FormData();
    var fileIn = $( "#fileToUpload" )[0];
    if( !upfiles ) 
        upfiles = fileIn.files; 
      $(upfiles).each(function(index, file) 
      {
           data.append( 'file'+index, file );
      });
   var request = $.ajax({
        url: 'files.php',
        type: 'POST',
        data: data,
        cache: false,
        contentType: false,
        processData: false,
        beforeSend: function( ) {
                    $(".progressbar").show();
            },
        xhr: function() {  
                var xhr = $.ajaxSettings.xhr();
                if(xhr.upload){ 
                        xhr.upload.addEventListener( 'progress', showProgress, false);
                }
                return xhr;
        },
        success: function(data){
            if( percentComplete <= 100 ) {
                    $('#pb div').animate({ width: '100%' }, { step: function(now) {
                            $(this).text( Math.round(now) + '%' );
                    },  duration: 10});
                    }
           $('#uplcomp').append( data );
        }
    });
在ajax start中:

 $(document).ajaxStop( function( ) {

//how can i add div back say : add <div id='total'></div> after <div id='someid'></div>

});
$(文档).ajaxStop(函数(){
//我怎样才能把div添加回说:addafter
});

有没有可能在第一个ajax进行过程中停止第二个ajax请求?除了在ajax进行过程中启用/禁用拖放之外,我相信更好的解决方案是显示一个覆盖该区域的透明或半透明覆盖层,并防止用户选择任何可拖动的内容

用于使用jquery禁用/启用:

使用
$(“#总计”).draggable(“禁用”)内部
beforeSend()
ajax函数

使用
$(“#总计”).draggable(“启用”)ajax函数的内部
success()

使用CSS:

演示:

CSS:

HTML:

<div class="checked">
    <div>Please wait...</div>
</div>

请稍候。。。
只需在ajax中切换隐藏/显示

使用
$('.checked').show()
beforeShow()和
$('.checked').hide()中
success()

最后我用了

if($.active === 0)
{
   call ajax
}
else
{
   alert("please wait previous request is in process");
}

您可以在调用ajax时禁用Dragable,并在收到响应“OK”时重新启用它。是的,我到底该如何实现@如果您使用的是jQuery,则使用Edgargodyuk。我相信您可以在ajax调用之前禁用它,比如-$(元素).draggable('disable')。在ajax调用返回success-$(element).draggable('enable')之后,我已经清楚地提到了我一直在使用的代码,但是我不知道为什么要为你们提供g$(element).draggable('enable'),我该怎么办,如果这是正确的方法,我怎么能集成到我已经发布的上述代码中呢?我不确定你是如何创建这些拖拽的,但是。。如果您在ajax调用中使用jquery draggable-calling.draggable('disable'),那么在发送之前应该可以工作。比如:beforeSend:function(){$(“.progressbar”).show();$(“您的可拖动的元素”).draggable('disable')}。。。。在成功中:function(data){}你是一个可分析的iti我已经清楚地提到了我一直在使用的代码,但我不知道为什么你们会被提供g$(element)。draggable('enable'),我能用它做什么,如果这是正确的方法,我怎么能集成到我发布的上述代码中呢。。。用户可以将其从firebug更改为不可接受的解决方案。我认为您不应该使用删除。如果确实要从DOM中删除该div并再次插入,请尝试jQuery detach:是的,可以这样做。首先检测ajax是否正在进行,并根据结果触发下一个ajax。请参阅此解决方案以检查挂起的请求:或者,您可以尝试在中止请求时手动将其设置为零。比如$.active=0或1,随你的便
<div class="checked">
    <div>Please wait...</div>
</div>
if($.active === 0)
{
   call ajax
}
else
{
   alert("please wait previous request is in process");
}