[英]jquery ui dialog and how to stop asp.net webforms postback
我有以下aspx / html页面,它使用jquery显示模式形式。 每次我单击jquery模态生成的按钮时,它都会在表单上回发信息。 我想停止这个。 下面是我的脚本
< 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>
将评论作为答案:
问题是您的代码正在对话框的close
处理程序中显式调用location.reload()
。 除此之外,它没有做任何有用的事情,因此您可以完全删除close
处理程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.