即使在按下取消后,为什么onclick事件仍会进入url?

时间:2016-02-01 14:03:16

标签: javascript knockout.js onclick

我有一个onclick功能

的链接
<a onclick="return confirm('Are you sure you want to delete this item?');"
        href="#"
        data-bind="ifnot: ($data.borrowed_amount > 0 || $data.status == 0), click: $root.deleteMoneyBorrowed">
    <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
</a>

当我点击它时,它会显示“你确定要删除”,但是当我按下取消时它仍会继续删除,如果按下取消则不知道如何停止删除。

1 个答案:

答案 0 :(得分:0)

您有2个事件绑定到<a>标记。一个事件是默认的onclick事件,另一个事件是你设置为通过knockout绑定到项目。您需要有一个绑定事件。

在这甚至你创建确认。然后,如果确认等于true,则处理删除方法。

因此,要直接删除onclick属性。在deleteMoneyBorrowed函数中,

if(window.confirm('...')) {
    deleteMoneyBorrowed();
    console.log('user confirmed');
} else {
    console.log('user cancelled');
}

此外,最好将班级定义移至父级<a>的范围内,然后删除范围。

<a href="#" class="glyphicon glyphicon-trash" aria-hidden="true" 
    data-bind="ifnot: ($data.borrowed_amount > 0 || $data.status == 0),
    click: $root.deleteMoneyBorrowed"></a>

以下是一个小提琴:https://jsfiddle.net/vk4nzo05/