8

我有一个button和一个dropdownlst

在此处输入图像描述

我有这个脚本:

$("form").submit(function (e)
    {
        $('#divOverlay').show();
        });

我的目标 :

当表单提交时,我需要显示“正在加载div”:

问题 :

当我按下按钮时,它显示 div(闪烁一秒钟的灰色 div):

在此处输入图像描述

但是当我在下拉列表中更改索引时:

<asp:DropDownList runat="server" OnSelectedIndexChanged="OnSelectedIndexChanged" AutoPostBack="True">
    <asp:ListItem Value="a"> a</asp:ListItem>
        <asp:ListItem Value="b">b</asp:ListItem>
</asp:DropDownList>

它确实提交但我没有看到 div :

在此处输入图像描述

为什么不$("form").submit(function (e)捕获所选索引更改后发生的此回发??

注意:

Fiddler 将两个事件(按下按钮 && 更改索引)显示为POST命令

文件的结构是什么?(伪):

<html  >
<head>
 ...     
</head>
<body>
    <div id='divOverlay'>  
       ...
    </div>

        <form id="form1" runat="server"  >
            <asp:Button runat="server" Text="sssssss"/>
        <asp:DropDownList runat="server" OnSelectedIndexChanged="OnSelectedIndexChanged" AutoPostBack="True">
            ...
        </asp:DropDownList>

        </form>


        <script type="text/javascript">
            $(function()
                {
                    $("form").submit(function (e)
                    {
                            $('#divOverlay').show();
                    });
                });

        </script>
</body>
</html>

你能显示发送到服务器的两个请求之间的区别吗?**是的。**

右侧是更改索引时,左侧窗格用于按下按钮

在此处输入图像描述

4

4 回答 4

2

有一个 ASP.NET 的方法:ClientScript.RegisterOnSubmitStatement,它允许您在每次提交 HtmlForm 时运行 JavaScript 语句

ClientScript.RegisterOnSubmitStatement(this.GetType(), "divOverlayShow", "$('#divOverlay').show();");
于 2013-08-27T10:02:55.457 回答
1

我猜自动回发行为是通过 javascript 和调用提交表单__doPostBack(),这不会触发提交事件。

您可以尝试:

<asp:DropDownList onchange="$('#divOverlay').show();" runat="server" OnSelectedIndexChanged="OnSelectedIndexChanged" AutoPostBack="True">
于 2013-08-26T14:32:29.467 回答
0

不确定这是否有帮助,但这对我有用。我可以在这两个事件中显示覆盖 div。

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script type="text/javascript">
        $(document).ready(function () {
            $("form").submit(function (e) { 
                alert("Submit");
            });
            $("#dropdown").change(function (e) {
                alert("Hi");
            });
        });

    </script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:Button runat="server" ID="submitbutton" Text="submit"/>
    <asp:DropDownList ID="dropdown" ClientIDMode="Static"  runat="server" AutoPostBack="True"  OnSelectedIndexChanged="OnSelectedIndexChange"/>
</asp:Content>
于 2013-08-27T02:05:47.067 回答
0

不确定,听起来像是 DDL 的回发和不同的 r 形式。

无论如何,我建议您通过从 DDL 中删除自动回发并添加一个客户端 onchange 来解决,您可以在其中显示灰色 div,然后手动回发服务器端 onselect,如下所示: http://bresleveloper.blogspot .co.il/2012/05/force-updatepanel-postback.html 或只是 $("form").submit()

于 2013-08-26T14:32:32.067 回答