关于input的file框onchange事件触发一次失效的新的解决方法

在google了众多方法后,网上有这么几种方法:

1、替换掉原来的input框

2、remove原来的input框,然后在添加进新的一样的input框

但是不知道为什么非常不幸的是,怎么弄我都弄不出。。

后来我脑袋突然闪过一个灵感,我在触发了一次onchange事件后,他没反应,是不是onchange事件没有绑定,后来发现我的推测是正确的,然后我就重新给他绑定了一个onchange事件,测试通过!!!

问题解决!!

$("#targetFile").change(function(){
			var filename = $(this).val();
			$("#originalTargetFileName").val(filename);
		});
		
		$("#targetUpload").submit(function(){
			$.ajaxFileUpload({
				type: "post",
				url: "${pageContext.request.contextPath}/upload.do",
				secureuri:false,
				fileElementId:"targetFile",
				dataType: "json",
				success: function(result,status) {
					if (result.success == "1") {
						alert("上传文件成功!");
						var filename=getFileNameFromFilePath(result.fileRelativePath);
						$("#target_upload_info").html("<div>"+"文件:"+filename+"   <a href='javascript:void(0)' οnclick='deletefile("+"\""+result.fileRelativePath+"\",\"target\")'>删除</a>"+"<br/></div>");
						$("#target_upload_info").css("visibility", "visible");
						$("#targetFileRelativePath").val(result.fileRelativePath);
					} else {
						$("#target_upload_info").html("文件上传失败: " + result.msg);
						$("#target_upload_info").css({"visibility":"visible", "color":"red"});
					}
				},
				complete: function(xmlHttpRequest) {
					$("#targetFile").replaceWith('<input type="file" id="targetFile" name="upFile" style="display:none;"/>');
					$("#targetFile").on("change", function(){
						var filename = $(this).val();
						$("#originalTargetFileName").val(filename);
					});
				},
				error: function(data, status, e) {
					alert("文件上传失败!");
				}
			});
			return false;
		});


  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值