meu arquivo pdf não for selecionado em primeiro lugar, apenas no Internet Explorer

votos
13

Eu tenho um arquivo de entrada para selecionar pdfs. Depois que eu selecionar os pdfs, são abertas as caixas de texto para dar um título a cada pdf.

Tudo está funcionando corretamente no Google Chrome.

No Internet Explorer Eu estou tendo um problema que eu não sou capaz de descobrir por que e como resolver.

Meu problema:

No Internet Explorer quando eu selecionar um pdf, pela primeira vez, nada acontece, o pdf não está marcada.

Eu preciso selecionar outro pdf, mas não pode ser o primeiro pdf selecionado, e quando eu selecionar outro pdf funciona.

E então começa a trabalhar sempre bem, mas primeira vez que seleccionar um pdf eu sempre tenho esse bug.

Você pode ver o meu exemplo completa com o meu problema aqui : http://jsfiddle.net/j5yeq/3/ (mas ver o meu problema você precisa testar no Internet Explorer)

Meu Html:

<div class=galerry>               
    <div class=label style=margin:0;>
        <span class=field>PDFS:</span>
        <input type=file name=pdfs[] class=j_galleryp multiple=multiple accept=application/pdf  />
        <div class=j_gfalsep>Selecione quantos pdfs quiser</div>
        <img src=img/upload.png class=j_gsendp alt=Enviar Capa title=Enviar Capa style=margin:0 0 10px 10px; />   
        <div class=label id=teste></div> 
    </div>
</div>

Meu jQuery:

$('.j_gsendp').click(function(){
    $('.j_galleryp').click().change(function(){
         var allFiles = this.files;  
         var numFiles = this.files.length;

        $('.j_gfalsep').animate({width:'500'}, 500, function(){
            $(this).html('You selected<strong>'+ numFiles +'</strong> files.'); 

            for(var i = 0; i<numFiles; i++) {
                var file = allFiles[i],
                    name = file.name;
                $('#test').append('<div class=message>Give a title to pdf <strong>'+name+':</strong></div><span>Title for pdf '+name+':</span><input type=text name=title[] value=/><br><br>');
             } 
            });
              this.val('');
        });
    });
});
Publicado 09/08/2014 em 21:28
usuário
Em outras línguas...                            


1 respostas

votos
1

Você código jQuery tem alguns erros. Não consigo encontrar a solução para o IE no momento, mas mesmo no Chrome e Firefox isso envios de código pdf duas vezes de segundo tempo. Eu já modificou o jquery para funcionar corretamente.

$('.j_gsendp').click(function(){
    $('.j_galleryp').trigger('click');
});

$('.j_galleryp').change(function () {
    update();    
});

function update(){
    var input = $('.j_galleryp')[0];
    var allFiles = input.files;
    var numFiles = input.files.length;
    alert(numFiles);
    $('.j_gfalsep').animate({
        width: '400'
    }, 500, function () {
        $(this).html('You select <strong>' + numFiles + '</strong>files.');
        for (var i = 0; i < numFiles; i++) {
            var file = allFiles[i],
                name = file.name;
            $('#test').append('<span class="field">Title of pdf ' + name + ':</span><input type="text" name="title[]" value="' + name + '"/><br><br>');
        }
    });
}

Utilize este código jQuery e não se ligam manipuladores de eventos dentro de outros manipuladores de eventos. Você pode acabar de ligação mesmo evento várias vezes.

NOTA: Eu não pode editar a pergunta e eu respondi isso como uma solução.

Respondeu 11/08/2014 em 11:35
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more