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>

知道我在这里做错了什么吗?

event.prventDefault()不起作用

您必须从以下函数中获取事件作为参数:

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;
    }
}