表单提交事件是不是捕获OnSelectedIndexChanged?

时间:2013-08-26 14:13:35

标签: javascript jquery html asp.net forms

我有buttondropdownlst

enter image description here

我有这个脚本:

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

我的目标:

当表单提交时,我需要显示一个" loading div" :

问题:

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

enter image description here

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

<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:

enter image description here

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

注意:

Fiddler将这两个事件(按下按钮和&amp;&amp;更改索引)显示为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>

您能否显示发送到服务器的两个请求之间的区别? **Yes 。**

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

enter image description here

4 个答案:

答案 0 :(得分:2)

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

ClientScript.RegisterOnSubmitStatement(this.GetType(), "divOverlayShow", "$('#divOverlay').show();");

答案 1 :(得分:1)

我想autopostback行为是通过javascript和__doPostBack()调用来提交表单,这不会触发提交事件。

您可以尝试:

<asp:DropDownList onchange="$('#divOverlay').show();" runat="server" OnSelectedIndexChanged="OnSelectedIndexChanged" AutoPostBack="True">

答案 2 :(得分:0)

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

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

答案 3 :(得分: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>