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 () {});

就这样搞定了,哈哈哈。。。共同学习,希望对大家有帮助,欢迎提出问题共同交流!

原文地址:https://www.cnblogs.com/become/p/5981406.html