event.prventDefault()不起作用
本文关键字:不起作用 prventDefault event | 更新日期: 2023-09-27 18:22:21
我的HTML.ActionLink中有一个方法,单击该链接后,会打开一个对话框来确认删除元素。如果用户单击Yes,则会调用并执行HTML.ActionLink中的方法。否则,不会调用该方法。然而,尽管在我的javascript函数中放入了event.prventDefault(),但当用户单击"否"时会调用该方法。以下是我的代码:
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>
知道我在这里做错了什么吗?
您必须从以下函数中获取事件作为参数:
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;
}
}
https://jsfiddle.net/4tbrs7xv/3/
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;
}
}
您需要更改以传递事件对象
<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;
}
}