event.preventDefault()阻止所有onclick事件而不是一个

时间:2012-10-15 07:36:31

标签: asp.net jquery preventdefault

我想品牌我的ASP.NET FileUpload控件,由于无法完成OOB,我选择只使用javascript复制它的功能。

我将“浏览”按钮onclick事件附加到我的按钮,然后使用符合预期效果的event.preventDefault()。但我还有另外两个按钮;保存,删除,这是正常的asp.net按钮。在我的“自定义”浏览按钮上触发onclick事件后,其他两个按钮onclick事件将不会触发。

[使用Javascript]

$(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事件而不是函数中存在的事件,我尝试使用Google搜索,但没有运气。

任何人都可以启发我吗?

1 个答案:

答案 0 :(得分:0)

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

//这是一个客户端事件。

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

所以此处的客户端 .click()事件与 Onclick服务器事件不同。

因为您使用 preventDefault 停止回发,服务器端事件显然不会触发......

要触发服务器端事件,您使用__doPostback()或删除preventDefault()方法..