Internet Explorer Datei-Eingabe Onchange
-
21-09-2019 - |
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);
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>')
);