我正在尝试将jquery onclick确认对话框实现到我的mvc3删除操作。 值得一提的是我是succ。渲染对话框本身,我在努力的是在单击继续按钮后从js /用户/删除操作的进程操作。这是代码:
onclick-delete.js
$(function () {
var deleteLinkObj;
// delete Link
$('.delete').click(function () {
deleteLinkObj = $(this); //for future use
$('#delete-dialog').dialog('open');
return false; // prevents the default behaviour
});
//definition of the delete dialog.
$('#delete-dialog').dialog({
autoOpen: false, width: 400, resizable: false, modal: true, //Dialog options
buttons: {
"Continue": function () {
$.post(deleteLinkObj[0].href, function (data) { //Post to action
// THIS IS WHERE I SHOULD SEND DATA TO MY DELETE ACTION (Users/Delete)
else {
alert("error");
}
});
$(this).dialog("close");
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
});
所以,我做错了什么。 点击错误后抛出任何想法
答案 0 :(得分:6)
如果我错了,请纠正我,但这不是更简单,更有效
@Html.ActionLink("Delete", "Delete",
new { id = item.Id },
new { onclick = "return confirm('Are you sure you wish to delete this article?');" })
答案 1 :(得分:3)
根据Mark Oreta的回答,这就是我要做的事情:
如果您像往常一样设置表单,您仍然可以从用户那里获得确认而不会有太多麻烦。采用以下HTML / JS:
<form action="/User/Delete" method="post">
<!-- some fields here -->
<input id="btnSubmit" type="submit" value="Delete" />
</form>
这应该正确地将表单提交给后端。有趣的是,如果您单击提交按钮,将在提交表单之前执行在javascript / jQuery中设置的任何单击事件。
所以你可以这样做:
$("#btnSubmit").click(function(event) {
event.preventDefault(); // --> This stops the form submit from happening.
});
如果您只需要用户确认的文本框,则无需使用标准confirm()
功能以外的任何内容。这向用户发出消息并要求他同意或取消。该函数根据用户的响应返回true / false。
所以你可以编写最简单的代码:
$("#btnSubmit").click(function(event) {
var confirmationmessage = "Are you sure you want to delete this?";
if( ! confirm(confirmationmessage) ) {
// !confirm == the user did not confirm. Therefore stop the form submission.
event.preventDefault(); // --> This stops the form submit from happening.
} else {
// The user agreed. There is no else block needed, then normal form submission may occur.
}
});
此代码比您问题中的代码段更简单,更易于阅读。当然,如果您更喜欢使用任何其他方式询问用户的确认,那也是有效的。只需确保最后得到if(someboolean) { event.preventDefault(); }
。
答案 2 :(得分:0)
我在这里为你创建了JSfiddle
我希望您提取一些相关代码,因为您的帖子功能设置不正确。我得到了这样的工作:
$(function () {
var deleteLinkObj;
// delete Link
$('.delete').click(function () {
deleteLinkObj = $(this); //for future use
$('#delete-dialog').dialog('open');
return false; // prevents the default behaviour
});
//definition of the delete dialog.
$('#delete-dialog').dialog({
autoOpen: false, width: 400, resizable: false, modal: true, //Dialog options
buttons: {
"Continue": function () {
$.post(deleteLinkObj[0].href, function (data) {
//do the data parsing here
alert(data);
});
$(this).dialog("close");
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
});
您在哪里看到数据解析是您需要处理控制器返回的内容的地方。通常,当我做这样的事情时,我从控制器上的删除操作返回的是一个布尔值,所以在上面的Jquery中,你可以做类似的事情
if (data == true)
alert("success!");
else
alert("error");
答案 3 :(得分:-1)
试试这个:
<script type="text/javascript">
$(document).ready(function () {
$('form[action$="/Delete"]').submit(function () {
return confirm('Are you sure you want to delete ?');
});
});
</script>
使用jQuery事件来考虑所有事情。http://api.jquery.com/submit/