我有这些动态创建的文件输入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);
答案 0 :(得分:4)
你可以用以下内容替换上面的内容
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);
答案 1 :(得分:4)
当您在jQuery中使用HTML创建元素时,返回的句柄会引用最外层的元素,因此您将change
事件处理程序放在<div>
上,而不是<input>
上。 }。
这在大多数浏览器中都有效,因为在DOM Level 2 Events规范中,change
事件'会使文档冒泡,以便在其更改时通知其父项,因此<div>
上的事件处理程序将了解其任何子<input>
的任何变化。但IE有自己的事件模型change does not bubble。
替代方案:
($('<input type="file" name="file" />')
.change(submit)
.prependTo('#add_inputs')
.wrap('<div class="add_input"></div>')
);