2010-01-25 130 views
3

我在jQuery中使用AjaxUpload插件,并且大部分工作都正常,但我必须点击两次按钮才能执行它。我猜这是一个范围的问题......或者还在学习......jQuery AjaxUpload,必须点击按钮两次?

这里是我的代码(?):

$(".upload-button").live("click", function(event) { 
     event.preventDefault(); 
     var currentId = $(this).closest("div").attr("id").replace("slide-", ""); 
     new AjaxUpload($(this), { 
     action: "./php/upload.php", 
     name: 'userfile', 
     autoSubmit: true, 
     onSubmit: function(file , ext) { 
     }, 
     onComplete: function(file, response) { 
     // enable upload button 
     // this.enable(); 
     $("#slide-" + currentId).find(".movie-image").attr("src", baseImgPath + file); 
     $("#mImg" + currentId).val(file); 
     } 
    }); 

任何想法表示赞赏。 :)

+0

编辑您的文章(代码),请...这是很难读... – Reigel 2010-01-25 19:00:57

回答

0

试试这个:

var $button = $(".upload-button"); 
    new AjaxUpload($button, { 
     action: "./php/upload.php", 
     name: 'userfile', 
     autoSubmit: true, 
     onSubmit: function(file , ext) { 
     }, 
     onComplete: function(file, response) { 
     // enable upload button 
     // this.enable(); 
     var currentId = $(this).closest("div").attr("id").replace("slide-", ""); 
     $("#slide-" + currentId).find(".movie-image").attr("src", baseImgPath + file); 
     $("#mImg" + currentId).val(file); 
     } 
    }); 
+0

我按照这个想法,但不幸的是,我仍然需要点击两次... – TwstdElf 2010-01-25 19:33:07

2

得到它的工作 - 这里是如何为别人可能被具有类似的问题...

的主要问题是,正在创建这些按钮动态的,并且AjaxUpload不会被初始绑定在.live()调用中,因此“点击,移动,再次点击,触发”。

通过调用AjaxUpload(包裹在它自己的功能,以下),由于有更多的按键我的循环中,它们最初的约束,并正常运行。

在循环使用的行:

makeUpButton(("#upload-button-" + slideCount), slideCount); 

的AjaxUpload电话:

function makeUpButton(theButton, theId) { 
    new AjaxUpload(theButton, { 
     action: "./php/upload.php", 
     name: 'userfile', 
     autoSubmit: true, 
     onSubmit: function(file , ext) { 
      this.disable(); 
     }, 
     onComplete: function(file, response) { 
      this.enable(); 
      $("#slide-" + theId).find(".movie-image").attr("src", baseImgPath + file); 
      $("#mImg" + theId).val(file); 
     }  
    }); 
} 

希望这可以帮助别人,我知道这是我逼疯了几天。 ;) 干杯。

+0

请更新您的原始帖子,而不是发布这个答案 – 2010-01-26 17:39:51

+0

@TB - 对不起,我没有一个帐户,当我原来的职位,并且在我今天回来之后无法看到编辑它的方法。我现在有一个帐户,将来会这样做。 – TwstdElf 2010-01-26 17:41:58

+0

考虑通过点击旁边的“打勾”或“检查”图标将此答案标记为“已接受”。 – 2012-08-18 14:02:31

2

尝试这种情况:

$(".upload-button").live("hover", function(event) { 

    var currentId = $(this).closest("div").attr("id").replace("slide-", ""); 
    new AjaxUpload($(this), { 
    action: "./php/upload.php", 
    name: 'userfile', 
    autoSubmit: true, 
    onSubmit: function(file , ext) { 
     //onsubmit code here.. 
    }, 
    onComplete: function(file, response) { 
     // oncomplete code here 
    } 
    }); 
    $(this).trigger('click'); 

});

矿井工作,但我不确定它是如何工作的。该“悬停”(而不是“点击”)将创建一个新的AjaxUpload(这将防止点击两次)

0
<script type="text/javascript"> 

$(document).ready(function() { 
     $('#yourlinkorbutton').click(function(){ 

       new AjaxUpload('#yourlinkorbutton'),{ 

        .... 

       }); 
    }); 

    $('#yourlinkorbutton').trigger.click(); 
    $('#yourlinkorbutton').trigger.click(); 
}); 

,将让你俩点击页面加载时。从那里点击一下。

+0

为了提高你的文章的质量,请包括/为什么你的文章将解决问题。 – 2012-10-06 06:35:52

2

如果要创建一个动态的按钮,你需要创建一个使用一个ID为每个按钮AjaxUpload,试试这个:如果你使用IMG

$('#' + ID).fadeOut("slow", function() { $('#' + ID).remove(); }); 

// to add new button                                 
$("#add_sector").click(function() { 
    var ID = [Generate a new ID]; 
    var button = '<a href="javascript:;" id="' + ID + '" class="subir_imagen"><img src="images/icon_subir32.png"></a>'; 


    $('#cont_img_catalogo').append(button); 

    //create Ajax                                  
    new AjaxUpload($('#' + ID),{ 
     action: 'procesar_imagen.php', 
      name: 'image', 
      onSubmit : function(file, ext){ 
      // desabilitar el boton                              
      this.disable(); 
      ... 
      }, 
      onComplete: function(file, response){ 
      // Habilitar boton otra vez                             
      this.enable(); 

      ... 

      } 
     }); 



    }); 

要删除按钮使用,你需要的类

a, a:visited{ 
display: block; 
float: left; 
text-decoration:none;} 
0

如果你使用动态控制,那时候我们在两次点击中遇到问题,我有解决了它为我工作。 我有花两天时间和解决,请检查下面的步骤:=

使用添加Java脚本加载功能在PHP循环每个以下

<?php 
for ($i=1; $i<=5; $i++) 
    { 
?> 
<script> 
$(window).load(function() 
     { 
     uploadphoto(<?php echo $i; ?>)     
      }); 
</script> 
<a href="javascript:void(0)" id="photo<?php echo $i; ?>" onclick="uploadphoto(<?php echo $i; ?>)" style="color: #666;"> Upload </a> 
<?php 

} 
?> 

和你的JavaScript文件,你可以从PHP循环动态ID

function uploadphoto(id) 
{ 

new AjaxUpload('#photo'+id, { 

所以,你可以通过上面的示例行动态ID,这是它:)编码快乐

相关问题