我的HTML.ActionLink中有一个方法,点击该链接后,会打开一个对话框以确认删除元素。如果用户单击“是”,则会调用并执行HTML.ActionLink中的方法。否则,不会调用该方法。但是,尽管在我的javascript函数中放了一个event.preventDefault(),但是当用户点击No时调用该方法。下面是我的代码:
使用Javascript:
function ConfirmerSuppressionPage() {
var x = confirm("Êtes-vous sûr de vouloir supprimer cette page?");
if (x == null) {
event.preventDefault();
return false;
}
if (x == true)
return true;
else
event.preventDefault();
return false;
}
HTML.ActionLink:
<div style="float: left; width: 40px; height: 10px; "> @Html.ActionLink
("-Pg", "SupprimerPage", "Section", new { pageId = @item.Id }, new {
Onclick = "ConfirmerSuppressionPage();", @class = "editLink", style = "width:30px" })</div>
HTML.ActionLink的HTML输出:
<a onclick="ConfirmerSuppressionPage();"
class="editLink ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
href="/Section/SupprimerPage?pageId=70" style="width:30px" role="button" aria-disabled="false">
<span class="ui-button-text">-Pg</span></a>
知道我在这里做错了吗?
答案 0 :(得分:1)
您必须将事件作为参数从以下函数中获取:
var els = document.querySelectorAll( 'a' );
for( var i=els.length; i--; ) {
els[i].addEventListener('click', function (event) { //for this a / href
event.preventDefault();
ConfirmerSuppressionPage(); //do whatever you want in here
});
}
function ConfirmerSuppressionPage() {
var x = confirm("Êtes-vous sûr de vouloir supprimer cette page?");
if (x === null) {
return false;
}
if (x === true) {
return true;
} else {
event.preventDefault();
return false;
}
}
答案 1 :(得分:0)
confirm
实际上会返回false
,所以试试这个:
function ConfirmerSuppressionPage(event) {
var x = confirm("Êtes-vous sûr de vouloir supprimer cette page?");
if (x === true) {
//some actions
} else {
event.preventDefault();
return false;
}
}
答案 2 :(得分:0)
您需要更改以传递事件对象
<a onclick="ConfirmerSuppressionPage(event);"
并且在这里得到被点击的元素(应该与事件参数一起使用:
function ConfirmerSuppressionPage(event) {
var x = confirm("Êtes-vous sûr de vouloir supprimer cette page?");
if (x === true) {
//some actions
} else {
event.preventDefault();
return false;
}
}