Подтвердить что ты не робот

Невозможно нажать кнопку asp.net в диалоговом окне jquery.

Я уже делал поиск в Интернете и пытался предоставить несколько решений, но ни один из них не работает для меня.

У меня есть кнопка в div. Я показываю div в диалоговом окне jquery. Щелчок кнопки не работает в диалоговом окне jquery.

У меня есть код ниже:

ASPX

    <div id='one'>
 <asp:LinkButton ID="ConfigureAlerts" OnClick="btnConfigureAlerts_Click" runat="server">Configure Alerts</asp:LinkButton>
</div>
<div id="ViewModalPopupDiv2">
        <asp:UpdatePanel ID="UpdatePanel3" runat="server">
            <ContentTemplate>
            <asp:Panel ID="Panel2" runat="server" HorizontalAlign="left" ScrollBars="Auto">
            <asp:Button ID="btnGetLogs" runat="server" Text="SendAlerts" OnClick="btnSendAlertEmail_Click"/>
            </asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>

jquery

function ViewModelPopup2() {
            $("#ViewModalPopupDiv2").dialog({
                scrollable: true,
                width: 800,
                modal: true
            });
        }

aspx.cs

protected void btnSendAlertEmail_Click(object sender, EventArgs e)
        {

            // Code to send email

        }

protected void btnConfigureAlerts_Click(object sender, EventArgs e)
        {

        ScriptManager.RegisterStartupScript
                       (this, this.GetType(), "callScriptFunction", "ViewModelPopup2();", true);
        }
    }

Пожалуйста, дайте мне знать, что мне нужно сделать, чтобы инициировать события управления сервером.

4b9b3361

Ответ 1

У меня также была проблема с кнопками asp.net и диалоговым окном jQuery UI. Чтобы решить эту проблему, вам нужно установить в своей кнопке aspnet тег UseSubmitBehavior на false.

Если для атрибута UseSubmitBehavior установлено значение true (это значение по умолчанию), кнопка будет использовать механизм отправки браузера (и пользовательский интерфейс jQuery Dialog работает с ним), если UseSubmitBehavior установите false, кнопка будет использовать клиентскую часть script, которую инфраструктура asp.net включает на странице для отправки в форму.

Итак, ваш HTML должен выглядеть следующим образом:

<div id='one'>
<asp:LinkButton ID="ConfigureAlerts" OnClick="btnConfigureAlerts_Click" runat="server">Configure Alerts</asp:LinkButton>
</div>
<div id="ViewModalPopupDiv2">
        <asp:UpdatePanel ID="UpdatePanel3" runat="server">
            <ContentTemplate>
            <asp:Panel ID="Panel2" runat="server" HorizontalAlign="left" ScrollBars="Auto">
            <asp:Button ID="btnGetLogs" runat="server" Text="SendAlerts" OnClick="btnSendAlertEmail_Click" UseSubmitBehavior="false" />
            </asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>

Подробнее на http://msdn.microsoft.com/library/system.web.ui.webcontrols.button.usesubmitbehavior.aspx

Ответ 2

Это классика, спасибо за перевод моего диалога jQuery, вопрос.

jQuery UI по какой-либо причине перемещает ваш код диалога в нижней части разметки html, вне вашего тега формы. Вам нужно переместить диалог обратно в форму с помощью еще одного jQuery:

dlg.parent().appendTo(jQuery('form:first'));

где dlg - это ваш диалоговый объект jQuery.UI.

        var dlg = $("#ViewModalPopupDiv2").dialog({
            scrollable: true,
            width: 800,
            modal: true
        });
        dlg.parent().appendTo(jQuery('form:first'));

Это должно заставить вас работать снова. Ура!

Если это не сработает, попробуйте сделать это в открытом событии:

open: function(type,data) { $(this).parent().appendTo("form"); }