Заставьте Uploadify работать в jquery гармошке, когда wmode = transparent - PullRequest
2 голосов
/ 29 сентября 2010

У меня есть jquery аккордеон, и я хочу вставить uploadify в заголовок аккордеона. Поместить его там работало нормально, но когда я установил прозрачный режим загрузки SWF, он не работает хорошо:

- в Chrome нажатие кнопки загрузки SWF ничего не делает
-в Firefox он открывает окно загрузки, но также закрывает / открывает аккордеон
-в Internet Explorer он отлично работает

Если я установлю wmode в окно, оно будет работать нормально, но я должен использовать прозрачный режим.

Есть идеи?
Arad.

Edit: Другим решением было бы вызвать uploadify swf click, используя javascript - возможно ли это?

Edit2: код-

соответствующий HTML:

<div id="accordion">
    <div class="category" id="category$category_id">

        <h3 class="ui-accordion-header">
            <div class="header-div">
                    <div id="categoryTitle$category_id" class="categoryTitle">$category_name</div>
            </div>

            <div class="rightPart">
                <input id="fileInput$category_id" class="fileInput" name="fileInput" type="file" />
            </div>
        </h3>

        <div style="overflow: auto; height: 400px; text-align: left; padding: 10px">
            (pictures are here...)
        </div>
    </div>

    <div class="category" id="category$categor... (more categories)
</div>

соответствующий javascript:

var stop = false;
$('#accordion h3').click(function(event) {
    if (stop) {
        event.stopImmediatePropagation();
        event.preventDefault();
        stop = false;
    }
});
$('#accordion').accordion({
    header: "> div > h3",
    collapsible: true
}).sortable({
    axis: "y",
    handle: "h3",
    stop: function(event, ui) {
        stop = true;
    },
    update: function(event, ui) {
        var categoriesArray = $(event.target).sortable('toArray');
        updateCategoriesOrder(categoriesArray);
    }
})

$('.fileInput').livequery(function(){
    var myID = $(this).attr('id'); // grab id of the clicked fileInput button (e.g. 'fileInput45')
    myID  = myID.replace('fileInput',''); // strip down to the numeric value

    $(this).uploadify({
        'uploader'  : 'uploader/uploadify.swf',
        'script'    : 'uploader/uploadify.php',
        'cancelImg' : 'uploader/cancel.png',
        'multi'     : true,
        'auto'      : true,
        'folder'    : '/uploads',
        'width'     : 24,
        'height'    : 24,
        'wmode'     : 'transparent',
        //'wmode'       : 'window',
        'fileDesc'  : 'Images (*.jpg;*.jpeg;*.jpe;*.png;*.gif;*.bmp)',
        'fileExt'   : '*.jpg;*.jpeg;*.jpe;*.png;*.gif;*.bmp;',
        'queueID'   : 'uploadQueue',// + myID,
        onComplete  : function(event, queueID, fileObj, reposnse, data) {
                //alert(myID);
           }
    });
});

1 Ответ

1 голос
/ 01 октября 2010

ОК, проблема решена.Кажется, что это не вина аккордеона или модема, это была сортируемая jquery.

Мой аккордеон также сортируемый, и при попытке нажать uploadify swf вступили во владение сортируемые методы.Решение этой проблемы может быть найдено в этой теме: http://www.uploadify.com/forum/viewtopic.php?f=7&t=1556

Он сделал, чтобы обернуть swf с помощью div, а затем использовать параметр sort для отмены перетаскивания класса div ({cancel: ".uploadSwfDiv"}).

В Firefox щелчок swf также открывает / закрывает аккордеон, поэтому для предотвращения этого я добавил этот код:

$('.uploadSwfDiv').click(function(event) {
        event.stopPropagation();
    }
);
...