Frage

Ich habe diese dynamisch erstellte Datei-Eingabe HTML-Elemente, die mit einem jQuery-Ajax-Datei-Upload verwendet werden Plug-In.

Ich mag den Datei-Upload zu starten, nachdem der Eingangswert aktualisiert wurde. Allerdings scheint der Internet Explorer die Javascript onChange zu ignorieren.

Wie kann ich dies in IE erreichen?

Beispiel:

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

$('#add_inputs').prepend(html);
War es hilfreich?

Lösung

Sie könnten nur das ersetzen oben mit etwas in diese Richtung

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

oder

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

Andere Tipps

Wenn Sie Elemente von HTML in jQuery, die zurückgegebene Handle Verweise das äußerste Element (e) zu erstellen, so dass Sie die change Event-Handler auf dem <div> setzen sind, nicht die <input>.

Dies funktioniert jedoch in den meisten Browsern, weil in der DOM Level 2 Veranstaltungen Spezifikation, die change Ereignis ‚Blasen‘ auf dem Dokument seine Eltern zu informieren, wenn sie sich ändert, so wird ein Event-Handler auf <div> von Änderungen auf jeder seiner Kind sich informieren <input>s. IE hat jedoch sein eigenes Event-Modell, in der ändert sich nicht Blase .

Eine Alternative:

($('<input type="file" name="file" />')
    .change(submit)
    .prependTo('#add_inputs')
    .wrap('<div class="add_input"></div>')
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top