无法使用 javascript 在用户控件中获取 FileUpload 的属性“值”

Unable to get property 'value' of FileUpload in a UserControl using javascript

本文关键字:FileUpload 获取 属性 控件 javascript 用户      更新时间:2023-09-26

我在母版页上包含一个用户控件(带有文件上传),如下所示:

母版页

 <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 %>');