启用/禁用ASP.. NET控件

Enable/Disable ASP.NET control with javascript

本文关键字:NET 控件 ASP 禁用 启用      更新时间:2023-09-26

我正在构建一个页面,用于在服务器上上传Excel文件以进行导入操作。所以a找到了一个javascript检查文件,选择文件扩展名void其他文件类型。现在我试图启用上传ASP。. NET按钮,但是javascript返回错误document.getElementById(...)为null。

代码如下:

<script type="text/javascript" language="javascript" defer="defer">
    function enableControl() {
        document.getElementById('button').disable = false;
    }
    function disableControl() {
        document.getElementById('button').disable = true;
    }
    function checkExcelFileUpload(elem) {
        var filePath = elem.value;
        if (filePath.indexOf('.') == -1)
            return false;
        var validExtensions = new Array();
        var ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();
        //Add valid extentions in this array
        validExtensions[0] = 'xls';
        //validExtensions[1] = 'pdf';
        for (var i = 0; i < validExtensions.length; i++) {
            if (ext == validExtensions[i])
                return true;
        }
        elem.value = '';
        alert('Sono ammessi solo file di Excel 97-2003');
        return false;
    }
</script>
<asp:FileUpload ID="fileupload" runat="server" size="50" onchange="javascript:try{if(checkExcelFileUpload(this) == true){enableControl();}else{disableControl();}}catch(err){alert(err);};" />
<asp:Button ID="button" runat="server" Text="Upload" Enabled="False" />

我在互联网上搜索,我发现getElementById的其他语法,但我仍然有这个问题。你能帮我吗?

谢谢

选项1由于您的按钮是服务器端控件,因此呈现的ID将与您指定的不同。使用下面的代码来生成ctl$body$button(根据控件的嵌套而定)。

document.getElementById('<%= button.ClientID %>')

选项2 如果你正在使用ASP。. NET 4中,可以使用Static客户端ID模式。

<asp:Button ID="button" runat="server" ClientIDMode="Static" Text="Upload" Enabled="False" />

见http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner - html标记- - asp -网- 4 - web -形式客户机id - vs - 2010和-网- 4 - 0 - series.aspx

而不是:

document.getElementById('button').disable = false;

你可能需要:

document.getElementById('<%= this.button.ClientID %>').disabled = false;