2010-01-25 3 views
3

Я использую плагин AjaxUpload с jQuery, и все работает нормально по большей части, но я должен дважды щелкнуть по моей кнопке, чтобы заставить его выполнить. Я предполагаю, что это сфера вопрос ... или еще учусь ...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

ответ

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

2

Got это сработало - вот как ни для кого другого, что могло бы быть с такой же вопрос ...

Основной вопрос заключается в том, что эти кнопки были созданы динамически, а 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); 
     }  
    }); 
} 

Надеется, что это поможет кому-то, я знаю, что это сводило меня с умом в течение нескольких дней. ;) Cheers.

+0

Пожалуйста, обновите свое оригинальное сообщение, а не разместите его как ответ –

+0

@TB - Извините, у меня не было учетной записи, когда я сделал оригинальное сообщение , и не мог видеть способ редактировать его, как только я вернулся к нему сегодня. У меня сейчас есть учетная запись, и я буду делать это в будущем. – TwstdElf

+0

подумайте о том, чтобы этот ответ был «принят», щелкнув значок «tick» или «check» рядом с ним. –

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

Чтобы улучшить качество вашего сообщения, пожалуйста, укажите, как/почему ваш пост решит проблему. –

2

При создании динамической кнопки, вам нужно создать AjaxUpload используя идентификатор для каждой кнопки, попробуйте следующее:

// 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(); 

      ... 

      } 
     }); 



    }); 

Для удаления использовать кнопку:

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

если вы используете IMG , вам понадобится класс

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

function uploadphoto(id) 
{ 

new AjaxUpload('#photo'+id, { 

так, вы можете передать динамический идентификатор выше образец линии, это все :) счастливого кодирования

Смежные вопросы