【问题标题】:jquery ui dialog and how to stop asp.net webforms postbackjquery ui 对话框以及如何停止 asp.net webforms 回发
【发布时间】:2011-12-23 22:05:54
【问题描述】:

我有以下 aspx/html 页面,它使用 jquery 来显示模态表单。每次我单击 jquery modal 生成的按钮时,它都会在表单上回发。我想阻止这一切。 下面是我的脚本

    < script type = "text/javascript" > $(function () {
     $(".addNew").dialog({
         autoOpen: false,
         width: 300,
         height: 300,
         resizeable: false,
         title: 'New Item',
         modal: true,
         close: function (event, ui) {
             event.preventDefault();
             location.reload(false);
             return false;
         },
         buttons: {
             "Add": function (evt) {
                 evt.preventDefault();
                 var name = $("#<%= txtName.ClientID  %>").val();
                 var surname = $("#<%= txtSurname.ClientID %>").val();
                 var age = $("#<%= txtAge.ClientID %>").val();

                 if (Page_ClientValidate("Person")) {
                     $.ajax({
                         type: 'POST',
                         url: 'Dialog.aspx/AddNewItem',
                         data: '{"name":"' + name + '", "surname":"' + surname + '", "age":' + age + '}',
                         contentType: "application/json; charset=utf-8",
                         dataType: "json",
                         success: function (msg) {
                             if (msg.d) {
                                 $("#user").append("<li>" + name + "</li>");
                             }
                         },
                         error: function () {
                             alert("Error! Try again...");
                         }
                     });
                 }
             },
             "Cancel": function (evt) {
                 evt.preventDefault();
                 $(this).dialog("close");
                 return false;

             }
         }
     });

     $("#add").click(function (event) {
         event.preventDefault();
         $(".addNew").dialog("open");
         return false;
     });
 });

<a href="#" id="add">Add New</a>
<form id="form1" runat="server">
<div>

    UserName
        <asp:TextBox ID="UserName" runat="server" />
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Please enter a username" Display="None" ControlToValidate="UserName" ></asp:RequiredFieldValidator>
 </div>
 <ul id="user">


 </ul>



<div class="addNew" title="Add new Person">
    <asp:ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="Person" />
<table>
    <tr>
        <td>Name</td>
        <td><asp:TextBox ID="txtName" runat="server" /></td>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Please enter a name" Display="None" ControlToValidate="txtName" ValidationGroup="Person"></asp:RequiredFieldValidator>
    </tr>
    <tr>
        <td>Surname</td>
        <td><asp:TextBox ID="txtSurname" runat="server" /></td>
    </tr>
    <tr>
        <td>Age</td>
        <td><asp:TextBox ID="txtAge" runat="server" /></td>
    </tr>
</table>
</div>  

</form>
</body>

【问题讨论】:

  • 你的处理程序被调用了吗?
  • 调用了 ajax,但是当我关闭 ui 模态表单时,页面重新发布。
  • 可能是因为您在关闭事件中调用了location.reload
  • liho1eye - 你完全正确。我正在使用我从网上抄袭的一些代码。请张贴作为答案,我会接受。

标签: jquery asp.net postback


【解决方案1】:

回复评论作为答案:

问题是您的代码在对话框的close 处理程序中显式调用location.reload()。除此之外,它没有做任何有用的事情,因此您可能可以完全删除 close 处理程序。

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 2012-12-06
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多