Internet Explorer文件输入onchange

时间:2009-11-23 00:46:35

标签: javascript jquery internet-explorer events onchange

我有这些动态创建的文件输入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);

2 个答案:

答案 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>')
);