javascript - 为什么即使按下取消,onclick 事件仍然会转到 url?

标签 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>

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

最佳答案

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

在此甚至您创建了确认。然后,如果确认等于true,处理delete方法。

因此,直接删除 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>

以 fiddle 为例:https://jsfiddle.net/vk4nzo05/

关于javascript - 为什么即使按下取消,onclick 事件仍然会转到 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35132488/

相关文章:

javascript - 为什么 onClick 函数无法识别?

javascript - 无法使用 replaceWith() 将值绑定(bind)到工具提示

javascript - 数据绑定(bind)元素不呈现子元素

javascript - Oracle Jet 不显示来自 Web 服务的数据

javascript - 对可观察数组进行排序,0 始终位于最后(对于升序和降序排序)

php - 使用 Javascript 提交表单无法正常工作

javascript - 表单验证不适用于多步骤表单

javascript - 如何将对象与数组进行比较并返回值

javascript - 将数组移动到表中的下一行

javascript - HTML onclick 处理程序不触发 insideHTML 更改