无法使用 javascript 在用户控件中获取 FileUpload 的属性“值”
本文关键字:FileUpload 获取 属性 控件 javascript 用户 | 更新日期: 2023-09-27 18:32:05
我在母版页上包含一个用户控件(带有文件上传),如下所示:
母版页
<uc:uploadFiles ID="UC1" runat="server"/>
uploadFiles.ascx
<script type="text/javascript">
function ValidateUpload() {
var FileUpload_function = document.getElementById('myfile');
if (FileUpload_function.value == '') {
return false;
}
else {
//do stuff }
return true;
}
</script>
<div id="div_FileUpload" class="FileUpload_content" runat="server">
<asp:FileUpload ID="myfile" class="FileUpload" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="myfile" ClientValidationFunction="ValidateUpload" />
</div>
当我运行页面时,我收到由自定义验证程序引起的以下错误:无法获取未定义或空引用的属性"值"。
我的猜测是,在呈现整个页面之前会验证 FileUpload 值,因为当我删除用户控件并将代码直接移动到母版页时,自定义验证器工作正常。
如何解决问题?
您需要
在document.getElementById
中使用.ClientID
。当你在用户控制中使用它时,cotnrol id - myfile 可能会重命名为其他名称,例如 ct00_myfile
在这种情况下,如果您执行相同的 js 代码,它会给你 null。
您需要使用以下 js 代码。
var FileUpload_function = document.getElementById('<%=myfile.ClientID %>');