inputtypes=“文件”的jQuery更改方法
我试图用它简单和优雅的API来接受jQuery 100%,但是我遇到了API和直接的HTML之间的不一致,我不太明白。
我有一个AJAXfile upload器脚本(function正常),我想运行每次文件input值的变化。 这是我的工作代码:
<input type="file" size="45" name="imageFile" id="imageFile" onchange="uploadFile()">
当我将onchange
事件转换为jQuery实现时:
$('#imageFile').change(function(){ uploadFile(); });
结果是不一样的。 使用onchange
属性时,可以随时调用uploadFile()
函数,如所期望的那样进行更改。 但是使用jQuery API .change()
事件处理程序,事件只会在第一次更改值时触发。 之后的任何值更改都将被忽略。 这似乎是错误的,但肯定这不能由jQuery监督,对不对?
有没有其他人遇到同样的问题,除了上面介绍的内容之外,您是否有解决方法或解决scheme?
是刷新您的input元素的ajax上传? 如果是的话,你应该考虑使用.live()方法。
$('#imageFile').live('change', function(){ uploadFile(); });
更新:
从jQuery 1.7+你现在应该使用.on()
$(parent_element_selector_here or document ).on('change','#imageFile' , function(){ uploadFile(); });
从jQuery 1.7开始,.live()方法已被弃用。 使用.on()附加事件处理程序。 老版本的jQuery用户应该优先使用.delegate().live()。 请参阅: http : //api.jquery.com/on/
$('#imageFile').on("change", function(){ uploadFile(); });
我无法让IE8 +通过向文件inputtypes添加jQuery事件处理程序来工作。 我不得不去老派,并添加onchange=""
属性到input标签:
<input type='file' onchange='getFilename(this)'/> function getFileName(elm) { var fn = $(elm).val(); .... }