2011-12-23 65 views
0

我有以下aspx/html頁面,它使用jquery來顯示一個模式窗體。每次我點擊一個jquery模式生成的按鈕,它都會在表單上進行回發。我想阻止這一點。 下面是我的腳本jquery ui對話框以及如何停止asp.net webforms回發

作爲答案
< 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> 
+0

你的處理程序是否被調用? –

+0

ajax被調用,但是當我關閉ui模式窗體時,頁面會重新發布。 – Podge

+0

很可能是因爲你在close事件中調用了'location.reload'? –

回答

0

寄寓評論:

問題是您的代碼明確地調用location.reload()對話框的close處理程序中。除此之外,它沒有做任何有用的事情,所以你完全可以刪除close處理程序。