Internet Explorer File INPUT ONCHANGE
-
21-09-2019 - |
سؤال
لقد قمت بإنشاء عناصر HTML التي تم إنشاؤها ديناميكيًا والتي يتم استخدامها باستخدام مكونات تحميل ملف jQuery-Ajax.
أود أن يبدأ تحميل الملف بعد تحديث قيمة الإدخال. ومع ذلك ، يبدو أن Internet Explorer يتجاهل JavaScript onchange.
كيف يمكنني تحقيق ذلك في IE؟
مثال:
var html = $('<div class="add_input">'+
'<input type="file" name="file"/></div>').change(submit);
$('#add_inputs').prepend(html);
المحلول
يمكنك فقط استبدال ما سبق بشيء على طول هذه الخطوط
var html = $('<div class="add_input"><input type="file" name="file"/></div>');
$('#add_inputs').prepend(html);
$("div.add_input > input[name='file']").change(submit);
أو
var html = $('<div class="add_input"><input id="filer" type="file" name="file"/></div>');
$('#add_inputs').prepend(html);
$("#filer").change(submit);
نصائح أخرى
عندما تقوم بإنشاء عناصر من HTML في jQuery ، يشير المقبض الذي تم إرجاعه change
معالج الأحداث على <div>
, ، ليس <input>
.
هذا يعمل مع ذلك في معظم المتصفحات لأنه في أحداث DOM المستوى 2 المواصفات ، و change
الحدث "فقاعات" رفع المستند لإبلاغ والديه عند تغييره ، لذلك معالج الأحداث على <div>
سيتم إبلاغ أي تغييرات على أي من أطفالها <input>
س. ومع ذلك ، فإن IE له نموذج الحدث الخاص به الذي التغيير لا يخدع.
بديل:
($('<input type="file" name="file" />')
.change(submit)
.prependTo('#add_inputs')
.wrap('<div class="add_input"></div>')
);
لا تنتمي إلى StackOverflow