Javascript 在'时停止模式关闭;ContextChanged';开火

Javascript 在'时停止模式关闭;ContextChanged';开火,javascript,jquery,asp.net,webforms,Javascript,Jquery,Asp.net,Webforms,我有一个asp.NETWebForm应用程序,用户单击一个按钮,然后显示一个包含3个字段的模式。我添加了一个OnTextChanged和AutoPostBack=“true”,因为我有一个代码,用于检查第一个文件中输入的名称当前是否存在。但当我用标签标出字段时,我的模态关闭了,我需要它保持打开 我和一个手风琴有一个非常相似的情况,我通过Jquery和asp:HiddenField使用手风琴,但我试图修改代码,但没有效果 模态的部分HTML <div class="form-group"&g

我有一个asp.NETWebForm应用程序,用户单击一个按钮,然后显示一个包含3个字段的模式。我添加了一个
OnTextChanged
AutoPostBack=“true”
,因为我有一个代码,用于检查第一个文件中输入的名称当前是否存在。但当我用标签标出字段时,我的模态关闭了,我需要它保持打开

我和一个手风琴有一个非常相似的情况,我通过
Jquery
asp:HiddenField
使用手风琴,但我试图修改代码,但没有效果

模态的部分HTML

<div class="form-group">
     <asp:Label ID="lblPlace" runat="server" Class="col-sm-3 control-label" Text="Place" AssociatedControlID="fldPlace" />
     <div class="col-sm-6">
          <asp:TextBox ID="fldPlace" runat="server" class="form-control" AutoPostBack="true" OnTextChanged="fldPlace_TextChanged" />
     </div>
</div>

模态的主类是
modal fade
,当它显示时,它会变为
modal fade in
,,我建议您设置AutoPostBack=“false”,并在OnTextChanged上对WebMethod进行ajax调用(代码隐藏检查第一个输入的名称当前是否存在)为了避免添加UpdatePanel并重新打开每个部分回发

您可以在这里看到如何将数据发布到WebMethod

要在回发后重新打开模式,可以使用隐藏字段并根据其值决定是否重新打开模式。假设您使用的是引导模式,则代码可能类似于以下内容:-

if ($('#' + hdnFldId).val() ==  "true") {
   $('#myModal').modal('show');
   $('#' + hdnFldId).val(false);
}
上述方法的问题在于,由于在显示模态时涉及动画(淡入)。该动画将在每次回发后对用户可见

为了克服这一问题,我们可以使用以下代码:

if ($('#' + hdnFldId).val() ==  "true") {
   $('#myModal').addClass("in").attr("aria-hidden", false).css("display", "block");
   $('#myModal').modal('show');   //This will take care of adding all the other elements and classes which modal uses.
   $('#' + hdnFldId).val(false);
}

更好的选择是使用
webmethod
,正如
Aleksey

所建议的那样,在我的
aspx
页面中添加了以下内容

JQuery

$('document').ready(function ()
{
    var hdnFldId = '<%= toKeepRemoveAccordionOpen.ClientID %>';
    $("#MainContent_txtRemoveUser").on("blur", function ()
    {
        //Sets value of hidden field to show panel after postback
        $('#' + hdnFldId).val(true);
    });

    if ($('#' + hdnFldId).val() == 'true')
    {
        showPanel();
        // Resets the value
        $('#' + hdnFldId).val(false);
    }

    function showPanel()
    {
        if ($('#MainContent_txtRemoveUser').val() != '')
        {
            $('.panel-collapse').removeClass('collapse').addClass('in');
        }
    }
});
function keepOpenSuggestPlaceModal()
{
    $('#placesModal').modal('show');
}
并在我的代码隐藏中为我的函数调用添加了以下内容

ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "keepOpenSuggestPlaceModal();", true);

尝试将整个元素包装在updatePanel中,然后在模式中添加带有输入元素id的postbacktrigger
function keepOpenSuggestPlaceModal()
{
    $('#placesModal').modal('show');
}
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "keepOpenSuggestPlaceModal();", true);