我有这些动态创建的文件输入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);
发布于 2009-11-23 00:52:06
您只需将上面的内容替换为以下内容
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);
发布于 2009-11-23 01:57:01
在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>')
);
https://stackoverflow.com/questions/1780611
复制相似问题