我想在我的 aspx 页面中使用对话框(确定和取消)。
当我按“确定”时,我的服务器端代码应该执行,当我按“取消”时,什么都不会发生,即使回发也不应该完成。
我想要实现的工作流程是:
我怎样才能实现这个目标?
最简单的方法是有一个像这样的 onclick 事件(从我的头顶写下来,未经测试):
onclick="return confirm('Are you sure?');"
如果单击“取消”(从而取消单击事件),则应将 return false 传递给 onclick 事件;如果单击“确定”,则应将 return false 传递给 onclick 事件。如果它是 ASP 按钮,则事件是 OnClientClick 而不是 OnClick。
要调用函数,事件处理程序将是:
onClientClick="return YourJavascriptFunction();"
其中的函数是这样的:
function YourJavascriptFunction() {
return confirm("Are you sure?");
}
显然该函数可以做的远不止这些,但它需要返回对话框的结果。
您可以通过 javascript/jquery 来完成此操作:
<script type='text/javascript'>
document.getElementById("someButtonId").onclick = function() {
var confirmation = window.confirm("Are you sure?"); //confirmation variable will contain true/false.
if(confirmation) {
vvar dataValue = { "name": "myName", "isGoing": "toAPlace", "returnAddress": "anyAddress" };
$.ajax({
type: "POST",
url: "Default.aspx/OnSubmit",
data: dataValue,
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
},
complete: function (jqXHR, status) {
alert("complete: " + status + "\n\nResponse: " + jqXHR.responseText);
}
});
}
else { /* do nothing */ }
}
</script>
在这种情况下,您向按钮添加一个单击事件,该事件将在其中打开一个确认。如果用户回答“是”,则将调用 Default.aspx 页面中的以下
OnSubmit
函数:
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
// method called from the javascript
[WebMethod]
public static string OnSubmit(string name, bool isGoing, string returnAddress)
{
return "it worked";
}
}
最后,在 javascript 中观察失败情况的处理情况。
function myFunction() {
var data = confirm("Are You sure you want to Approve this request ??");
if (data) {
return true;
}
else {
return false;
}
}
//您可以使用此代码