3

インポート操作のためにサーバーに Excel ファイルをアップロードするページを作成しています。そのため、選択したファイルの拡張子をチェックする JavaScript が見つかり、他のファイルの種類が無効になりました。ASP.NET のアップロード ボタンを有効にしようとしていますが、javascriptdocument.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たが、まだこの問題があります。手伝って頂けますか?

ありがとうございました

4

2 に答える 2

6

オプション 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-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-netを参照してください。 -4-0-series.aspx

于 2013-01-15T17:59:32.107 に答える
2

それ以外の:

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

あなたはおそらく欲しいでしょう:

document.getElementById('<%= this.button.ClientID %>').disabled = false;
于 2013-01-15T17:58:48.630 に答える