我使用下面的jquery函数为asp.net文件上传控件进行客户端验证。
function setUplaodButtonState() {
var maxFileSize = 4096000 // 4MB -> 4000 * 1024
var fileUplaod = $("#<%=flupldSignUpDocuments.ClientID%>");
if (fileUplaod.val() == '') {
return false;
} else {
if (fileUplaod[0].files[0].size < maxFileSize) {
$("#<%=lblfilesizerror.ClientID%>").html("");
return true;
} else {
$("#<%=lblfilesizerror.ClientID%>").text('File is Larger than recommended size');
var file = document.getElementById("<%=flupldSignUpDocuments.ClientID%>");
$(file).parent().html($(file).parent().html());
return false;
}
}
}
用户第一次上传大于指定文件大小的文件时,会显示错误,并且文件上载框也会清除任何内容。但是,在第二次尝试使用大于建议大小的同一文件时,不会清除该框。
答案 0 :(得分:0)
这可能是因为您正在完全替换文件上传控件的html并将其替换为自己的html。这样您就可以删除所有附加的(js)事件处理程序。您可以尝试使用jQuery clone()方法,它有一个用于克隆控件的参数,包括事件处理程序和附加数据。
这样的事情:
var clone = $(file).clone(true);
var parent = $(file).parent();
parent.html("");
parent.append(clone);
有疑问。一种较短的编码方式,但你明白了。