如何在删除前显示确认消息?

IT技术 javascript html
2021-01-30 20:36:02

我想在单击删除时收到确认消息(这可能是按钮或图像)。如果用户选择“ Ok”,则删除完成,否则,如果Cancel单击”,则什么也不会发生。

我尝试在单击按钮时回显这一点,但回显内容会使我的输入框和文本框失去其样式和设计。

6个回答

onclick在按钮事件中写这个

var result = confirm("Want to delete?");
if (result) {
    //Logic to delete the item
}
@franz1 您误解了答案中显示的内容,此代码不在按钮内,这是可以在函数内执行的代码,并且可以使用 onclick="myFunctionThatDeletesMyItem()" 处的任何按钮调用该函数。答案非常简单有效!
2021-03-21 20:36:02
对于任何没有 JavaScript 经验的人来说,你的代码行毫无意义,这个例子看起来不确定且令人困惑。尽管如此,这是一个很好的答案。
2021-03-25 20:36:02
我认为您应该在答案中添加一些细节。为什么要在按钮内插入代码而不是将其写在 head 部分或外部文件中?这是一个非常通用的功能,程序员可能想对几个按钮多次使用它,我不会将它写在一个特定的按钮中......
2021-03-26 20:36:02
精彩的回答!简短、精确且高效工作
2021-04-01 20:36:02
在反应中,您必须使用 window.confirm() 而不仅仅是 confirm()
2021-04-08 20:36:02

你可以更好地使用如下

 <a href="url_to_delete" onclick="return confirm('Are you sure you want to delete this item?');">Delete</a>
非常危险!如果 Javascript 已关闭怎么办?或者,如果蜘蛛/搜索机器人会阅读此页面?然后它会跟随所有链接并删除所有内容!一些浏览器插件还会跟踪页面上的所有链接以对其进行预缓存。永远不要这样做!删除不应该是 GET 请求。
2021-03-19 20:36:02
它并不比 #1 up 的答案更危险,如果关闭 JavaScript,任何 JavaScript 都是危险的。开启或关闭 JavaScript 是用户的个人选择,如果关闭 JavaScript,用户应该知道最好不要按任何网站上的任何按钮。总是有服务器端验证作为一个很好的选择。
2021-03-27 20:36:02
这应该在线程中。简单、快速、有效。完美地完成这项工作。
2021-03-28 20:36:02
从理论上讲,如果您正在管理资源,那么您需要进行一些身份验证,并且机器人不会抓取这些页面中的任何一个。
2021-03-30 20:36:02

这就是使用不显眼的 JavaScript 和 HTML 中保存的确认消息的方法。

<a href="/delete" class="delete" data-confirm="Are you sure to delete this item?">Delete</a>

这是纯香草 JS,与 IE 9+ 兼容:

var deleteLinks = document.querySelectorAll('.delete');

for (var i = 0; i < deleteLinks.length; i++) {
  deleteLinks[i].addEventListener('click', function(event) {
      event.preventDefault();

      var choice = confirm(this.getAttribute('data-confirm'));

      if (choice) {
        window.location.href = this.getAttribute('href');
      }
  });
}

看到它在行动:http : //codepen.io/anon/pen/NqdKZq

@CiroSantilli 巴拿马文件六四事件法轮功给你;)
2021-03-28 20:36:02
如果这个例子被编辑为也可以在禁用 JavaScript 的情况下工作会很酷,例如href="/delete"我认为就足够了。或表单提交示例。
2021-04-01 20:36:02
@CiroSantilli 巴拿马文件六四事件法轮功由于 event.preventDefault() 函数,情况已经如此。您可以用 url 替换哈希字符,它不会被触发。但是,如果 JavaScript 被禁用,链接将按预期工作。
2021-04-02 20:36:02
你是对的,这是因为 querySelector 只匹配第一个元素。我已经编辑了答案并将代码笔分叉为使用 querySelectorAll 代替。
2021-04-04 20:36:02
这非常有效,但仅适用于第一个按钮。如果我们有 20 个或更多呢?谢谢!
2021-04-08 20:36:02
function ConfirmDelete()
{
  return confirm("Are you sure you want to delete?");
}


<input type="button" onclick="ConfirmDelete()">
或者只是return confirm("…")没有必要分配一个布尔变量,然后分支到 if/else。
2021-03-30 20:36:02
我认为最好只有1个返回点。所以我更喜欢
2021-04-01 20:36:02

这是非常简单的一行代码

<a href="#" title="delete" class="delete" onclick="return confirm('Are you sure you want to delete this item')">Delete</a>
看起来在接受的答案下方已经有这样的答案。
2021-03-22 20:36:02