file di input Internet Explorer onchange
-
21-09-2019 - |
Domanda
Ho questi elementi di input file HTML creato in modo dinamico che vengono utilizzati con un jQuery-ajax plug-in upload di file.
Vorrei che il caricamento di file da avviare dopo il valore di ingresso è stato aggiornato. Tuttavia, Internet Explorer sembra ignorare il Javascript onChange.
Come posso raggiungere questo obiettivo in IE?
Esempio:
var html = $('<div class="add_input">'+
'<input type="file" name="file"/></div>').change(submit);
$('#add_inputs').prepend(html);
Soluzione
Si potrebbe semplicemente sostituire il precedente con qualcosa in questo senso
var html = $('<div class="add_input"><input type="file" name="file"/></div>');
$('#add_inputs').prepend(html);
$("div.add_input > input[name='file']").change(submit);
o
var html = $('<div class="add_input"><input id="filer" type="file" name="file"/></div>');
$('#add_inputs').prepend(html);
$("#filer").change(submit);
Altri suggerimenti
Quando si crea elementi HTML in jQuery, l'handle restituito fa riferimento l'elemento più esterno (s), in modo che stai mettendo il gestore di eventi change
sul <div>
, non il <input>
.
Questo funziona comunque nella maggior parte dei browser, perché nel Livello DOM 2 Eventi specifica, l'evento change
'bolle' il documento per informare i suoi genitori quando cambia, in modo da un gestore di eventi on <div>
otterrà informati di eventuali cambiamenti su uno qualsiasi dei suoi bambini <input>
s. Tuttavia IE ha un proprio modello di eventi in cui cambiamento non lo fa bolla .
In alternativa:
($('<input type="file" name="file" />')
.change(submit)
.prependTo('#add_inputs')
.wrap('<div class="add_input"></div>')
);