0

コードのアイデアは、個別のテキストボックスとボタンを作成して、それぞれにクラスを作成し、それらをfileuploadのように機能させることでした。

ただし、javascriptは2回実行され、fileupload値は消去されます。

<style type="text/css">
div.fileinputs
{
    position: relative;
}

div.fakefile
{
    position: absolute;
    top: 0px;
    left: 0px;
    z-index: 1;
}

input.file
{
   visibility:hidden;
}
</style>
<script type="text/javascript" language="javascript">
    function uploadFileChange() {
            alert("start");
            document.getElementById('FileName').value = document.getElementById("FileUpload1").value;
            alert("end");
    }
</script>
<div class="fileinputs" style="width: 50%;">
    <!-- Upload file invisivel-->
    <asp:FileUpload ID="FileUpload1" ClientIDMode="Static" class="file" runat="server" 
         onpropertychange="uploadFileChange();"  />
    <!-- button e textbox falsas para poder dar syles ao button-->
    <div class="fakefile">
        <asp:TextBox ID="FileName" CssClass="textbox" ClientIDMode="Static" runat="server" Width="31%" ></asp:TextBox>
        <asp:Button ID="FileChooserButton1" CssClass="btnSubmit" runat="server" Text="Procurar..."
            ForeColor="White" onClick="document.getElementeByID('FileUpload1').click()" />
    </div>
</div>

どうしたの???前もって感謝します

4

1 に答える 1

1

コードを少し修正し、

<asp:Button ID="FileChooserButton1" CssClass="btnSubmit" runat="server" Text="Procurar..."             ForeColor="White" onClientClick="document.getElementeByID('FileUpload1').click();return false;" />

clickeventにreturnfalseを書き込むと、ポストバックされません。fileuplaod値が失われる理由は、ページがポストバックされるためです。

または、これを試すことができます、

<asp:Button ID="FileChooserButton1" CssClass="btnSubmit" runat="server" Text="Procurar..." ForeColor="White" onClientClick="CallClick();return false;" />

function CallClick(){
document.getElementeByID('FileUpload1').click();
return false;
}
于 2012-05-11T09:46:50.520 に答える