Question

I ai créées dynamiquement ces éléments HTML d'entrée de fichier qui sont utilisés avec un plug-in de téléchargement de fichiers jQuery Ajax.

Je voudrais que le téléchargement de fichier pour démarrer après la valeur d'entrée a été mis à jour. Cependant, Internet Explorer semble ignorer le Javascript onChange.

Comment puis-je parvenir dans IE?

Exemple:

var html = $('<div class="add_input">'+
        '<input type="file" name="file"/></div>').change(submit);

$('#add_inputs').prepend(html);
Était-ce utile?

La solution

Vous pouvez simplement remplacer ce qui précède avec quelque chose le long de ces lignes

var html = $('<div class="add_input"><input type="file" name="file"/></div>');
$('#add_inputs').prepend(html);
$("div.add_input > input[name='file']").change(submit);

ou

var html = $('<div class="add_input"><input id="filer" type="file" name="file"/></div>');
$('#add_inputs').prepend(html);
$("#filer").change(submit);

Autres conseils

Lorsque vous créez des éléments de HTML dans jQuery, la poignée de retour fait référence à l'élément le plus externe (s), de sorte que vous mettez le gestionnaire d'événements change sur le <div>, pas <input>.

Cela fonctionne néanmoins dans la plupart des navigateurs, car dans la DOM niveau 2 Events spécification, l'événement change « bulles » le document à informer ses parents quand il change, donc un gestionnaire d'événements sur <div> sera renseIGnez de tout changement sur l'un de ses enfants <input>s. Cependant IE a son propre modèle d'événement dans lequel changement ne à bulles.

Une alternative:

($('<input type="file" name="file" />')
    .change(submit)
    .prependTo('#add_inputs')
    .wrap('<div class="add_input"></div>')
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top