jQuery的ajaxFileUpload上传插件——刷新一次才能再次调用触发change
这个问题并不是由change事件失效造成的,而是ajaxFileUpload插件造成的,它会把原来的file元素替换成新的file元素,所以之前绑定的change事件就失效了。
查了一些资料,有些朋友推荐了一些方案:
方案一:选择完成自动提交的问题,在每次处理完成后把 file表单 克隆替换成原来的代码
$("#upload").replaceWith($("#upload").clone(true));
方案二:用jQuery的live代替直接使用change。
错误代码:
$("#UploadFile").change(function(){ //do someing });
正确代码:
$("#UploadFile").live('change', function(){ //do someing });
以上是其他朋友方案,经测试并不能解决(可能是我本地代码有问题)。
而我自己的方案则是:
<a class="file"><input id="btnfile" name="btnfile" type="file"/>浏览</a>
我们正常给input 加事件,要么就是直接在表单绑定onchange事件;要么是在js写绑定事件,而这里的绑定事件的方式则有多种:bind(),on(),live()
不管用以上哪种方式input 的事件都会只会触发一次,那么我是怎么处理的呢?
我的绑定事件是这样写的:$(".file").on("change", "input[type='file']", function () {});
就这样搞定了,哈哈哈。。。共同学习,希望对大家有帮助,欢迎提出问题共同交流!