2

我在使用 JQuery 插件 BlockUI 模态化的 div 中有一个更新面板。UpdatePanel 内部是一个文本框和一个按钮。当我在文本框中输入内容并单击按钮时,我无法检索文本框中的文本。当我调试它显示文本框没有价值。

<asp:UpdatePanel ID="upTest" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <div id="divTest">
            <asp:TextBox ID="txtTestVS" runat="server" /><br />
            <asp:Button ID="cmdTest" Text="TEST" OnClick="cmdTest_Click" UseSubmitBehavior="false" runat="server" />
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

服务器端:

protected void cmdTest_Click(object sender, EventArgs e)
{
    string x = txtTestVS.Text;
}

这应该澄清一些事情。这是页面的全部内容。

<a href="javascript:$.blockUI({ message: $('#divTest') });">SHOW MODAL</a>

<div id="divTest">
    <asp:UpdatePanel ID="upTest" UpdateMode="Conditional" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="txtTestVS" runat="server" /><br />
            <asp:Button ID="cmdTest" Text="TEST" OnClick="cmdTest_Click" UseSubmitBehavior="false" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
</div>
4

2 回答 2

1

这是对话框插件的常见问题。问题是当内容被放入 blockUI 容器时,它被附加到元素上,不再以提交给服务器的形式出现。要解决这个问题,您需要稍微编辑 blockUI 代码:

这是来源:http: //github.com/malsup/blockui/blob/master/jquery.blockUI.js

更改:第 262 行:
var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
改为:
var layers = [lyr1,lyr2,lyr3], $par = full ? $('form') : $(el);

还有这个:

第 382 行:
els = $('body').children().filter('.blockUI').add('body > .blockUI');
至:
els = $('form').children().filter('.blockUI').add('form > .blockUI');

这应该会让你继续前进,并且文本框的值会通过。

(Nick Craver 的回应https://stackoverflow.com/users/13249/nick-craver

于 2010-02-17T14:18:56.003 回答
0

如果您尝试在更新面板中的按钮上使用 blockUI(即单击更新面板中的按钮并且 UI 被阻止),则需要使用 PageRequestManager 事件来处理它

prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_beginRequest(function() {
            $.blockUI({ message: '<img  src="../../Content/images/Busy2.gif" />' });
        });

        prm.add_endRequest(function() {
            $.unblockUI();
        });

或者在单击按钮时,如果您想显示带有此文本框和按钮的模式窗口,您可以尝试类似这样的操作

于 2010-02-15T23:16:40.687 回答