event.preventDefault()不起作用。

时间:2015-11-17 08:47:31

标签: javascript c#

我的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>

知道我在这里做错了吗?

3 个答案:

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

https://jsfiddle.net/4tbrs7xv/3/

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