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);
È stato utile?

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>')
);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top