Internet entrée de fichier Explorer onchange
-
21-09-2019 - |
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);
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>')
);