在jQuery对话框上禁用回发

时间:2013-04-01 03:11:37

标签: javascript jquery asp.net drop-down-menu postback

有没有办法阻止jquery模式对话框在每次调用dropdownlist postback时弹出?因为好像整个页面都刷新了所以我的jquery模式对话框也会弹出,但是我想阻止它发生,我只需要在第一次加载页面时弹出它。

这是我的Javascript,尝试使用event.preventDefault,但它仍无法正常工作。

$(function() {
    $("#ddlNo").click(function(event) {
        event.preventDefault();
    });
    $("#dialog").dialog({
        autoOpen: true,
        closeOnEscape: false,
        modal: true,
        show: { effect: "fade", duration: 1000 },
        buttons: {
            "Confirm": function() {
                var bValid = true;
                allFields.removeClass("ui-state-error");
                bValid = bValid && check(true);

                if (bValid) {
                    $("#users tbody").append("<tr>" +
                "<td>" + agree.val() + "</td>" + "</tr>");
                    $(this).dialog("close");
                }
            }
        },
        close: function() {
            allFields.val("").removeClass("ui-state-error");
        }
    });
});

这是我的标记:

<asp:DropDownList ID="ddlNo" runat="server" DataSourceID="odsEq"
    DataTextField="No" DataValueField="Id" AutoPostBack="true">
</asp:DropDownList>

3 个答案:

答案 0 :(得分:0)

我建议你创建一个打开弹出窗口的函数,来自服务器端的页面加载事件,让我们在Postback != True时注册一个客户端脚本,这个脚本将调用你的js脚本打开对话框。希望这有帮助。

如果您不知道如何使用注册客户端脚本,可以在MSDN

查看

答案 1 :(得分:0)

如果有人更改下拉列表时您不需要回发,请将其更改为AutoPostBack =“false”

如果确实需要它进行回发,请将其放在UpdatePanel中,其他控件依赖于其状态,并使用正确的异步语法,如下例所示:http://msdn.microsoft.com/en-us/library/system.web.ui.asyncpostbacktrigger.aspx

答案 2 :(得分:0)

我想我应该分享一个解决方案。找到一个可行的解决方案,对于那些需要它的人,你可以使用:

<%if (!this.IsPostBack)
      { %>
    <script type = "text/javascript">
        $(function () {
            //logic
        });
    </script>
    <%} %>