显示jquery对话框确认/取消模式。表格提交确认点击

时间:2014-10-23 13:17:39

标签: c# jquery jquery-ui events dialog

我的页面上有一个jquery-ui模式对话框,当用户点击asp.net Decline中包含的控件上的UpdatePanel按钮时,我会显示这些对话框,其中有很多页面上的控件。

脚本:

function confirmDecline(event) {
       event.preventDefault();
       $("#dialog-confirm").dialog({
            resizable: false,
            height: 140,
            modal: true,
            buttons: {
                "Confirm": function () {
                    $('form').submit();
                    return true;
                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }
        });
    }

Pod标记:

<div class="dms-pod">
<ul>
    <li><strong><asp:Literal ID="litCompanyName" runat="server" /></strong></li>
    <li><asp:Literal ID="litVatNumber" runat="server" /></li>
    <li><asp:Literal ID="litTown" runat="server" /></li>
</ul>
<asp:Panel ID="pnlDmsForm" runat="server" CssClass="dms-form" DefaultButton="btnAccept">
    <asp:TextBox ID="txtDmsNumber" runat="server" placeholder="DMS number" />
    <asp:RequiredFieldValidator ID="reqDmsNumber" runat="server" ErrorMessage="Invalid DMS number" Display="Dynamic" CssClass="error" ControlToValidate="txtDmsNumber" />
    <ajaxToolkit:ValidatorCalloutExtender ID="valDmsNumber" runat="server" TargetControlID="reqDmsNumber" HighlightCssClass="error" />
    <div class="dms-buttons">
        <div class="container">
            <asp:LinkButton ID="btnAccept" runat="server" CssClass="btn" Text="accept" OnClick="btnAccept_Click" />
        </div>
        <div class="container">
            <asp:LinkButton ID="btnDecline" runat="server" CssClass="btn-alt" Text="decline" OnClick="btnDecline_Click" OnClientClick="confirmDecline(event)" />
        </div>
    </div>
    <div class="clear"></div>
</asp:Panel>
<div class="clear"></div>
<asp:HiddenField ID="hdnDealershipIRLinkID" runat="server" />

然后包含在更新面板中:

<asp:UpdatePanel ID="updPendingDms" UpdateMode="Always" runat="server">
    <ContentTemplate>
         <asp:Repeater ID="rptPendingDmsRequests" runat="server" OnItemDataBound="rptPendingDmsRequests_ItemDataBound" OnItemCreated="rptPendingDmsRequests_ItemCreated">
             <ItemTemplate>
                 <uc:DmsRegisterPod runat="server" ID="ucDmsRegisterPod" />
             </ItemTemplate>
        </asp:Repeater>
    </ContentTemplate>
</asp:UpdatePanel>

我正在使用event.preventDefault()停止触发按钮操作,但是,如果用户点击Confirm按钮,我还想允许操作继续。我以为我可以使用:

$('form').submit();

在对话框Confirm功能中,但这会触发转发器/更新面板中其他控件的验证器。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

管理解决此问题,发布答案,以防其他人遇到类似问题。

我传入触发点击的控件的ID:

OnClientClick="confirmDecline(event, this.id)"

然后我在对话框__doPostBack函数

中使用此ID启动Confirm
function confirmDecline(event, controlId) {
    event.preventDefault();
    controlId = controlId.replace(/_/g, '$');
    $("#dialog-confirm").dialog({
        resizable: false,
        height: 140,
        modal: true,
        buttons: {
            "Confirm": function () {
                $(this).dialog("close");
                __doPostBack(controlId, '');
                return true;
            },
            Cancel: function () {
                $(this).dialog("close");
            }
        }
     });
}