0

ASP.NET FileUpload コントロールをブランド化したかったのですが、それは OOB で実行できないため、javascript を使用してその機能をコピーすることにしました。

「ブラウズ」ボタンonclickイベントをボタンにアタッチし、event.preventDefault()意図したとおりに機能するものを使用します。しかし、他にも 2 つのボタンがあります。通常のasp.netボタンである保存、削除。onclick「カスタム」ブラウズ ボタンでイベントをトリガーした後、他の 2 つのボタンonclickイベントはトリガーされません。

【ジャバスクリプト】

$(document).ready(function () {
    // The "custom" browse button.
    $('#<%=ProfilePictureBrowsePicture.ClientID%>').click(function (event) {
        event.preventDefault();
        $('#<%=ProfilePictureUpload.ClientID%>').click();
    });

    // the "custom" fileupload box to display the selected image path.
    $('#<%=ProfilePictureUpload.ClientID%>').change(function () {
        $('#<%=ProfilePictureShowFile.ClientID%>').val($(this).val());
    });
});

[HTML]

<asp:FileUpload ID="ProfilePictureUpload" CssClass="filename" runat="server" />
<asp:TextBox ID="ProfilePictureShowFile" CssClass="fba-txtBox showSelectedFile" runat="server" /><br />
<asp:Button ID="ProfilePictureBrowsePicture" CssClass="btnYellow" runat="server"  Text="Gennemse" ToolTip="Gennemse billede" />
<asp:Button ID="ProfilePictureUploadButton" CssClass="btnYellow" runat="server" Text="Gem" ToolTip="Gem billede" OnClick="ProfilePictureUploadButton_Click" />
<asp:Button ID="ProfilePictureDeleteButton" CssClass="btnYellow" runat="server" Text="Slet" ToolTip="Slet billede" OnClick="ProfilePictureDeleteButton_Click" EnableViewState="false" />

event.preventDefault()関数に存在するイベント以外の onclick イベントに影響するかどうかをグーグルで調べてみましたが、うまくいきませんでした。

誰でも私を啓発できますか?

4

1 に答える 1

0
event.preventDefault();   // Cancels the postback  ...
$('#<%=ProfilePictureUpload.ClientID%>').click(); 

// これはクライアント側のイベントです。

OnClick="ProfilePictureUploadButton_Click"  // This is server side event

したがって、ここでのクライアント側の.click()イベントは、 Onclick サーバーイベントと同じではありません。

preventDefaultを使用してポストバックを停止しているため、サーバー側のイベントは明らかに発生しません...

サーバー側のイベントを発生させるには、メソッドを使用する__doPostback() か削除します。preventDefault()

于 2012-10-15T07:44:04.120 に答える