You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript与HTML实现Confirm确认对话框提交异常问题求助

问题根因
  • submit按钮的默认行为是触发表单提交,你当前的逻辑没有阻止用户点击「否」时的默认提交动作
  • confirmAction 函数没有返回布尔值控制提交逻辑,onclick 事件绑定也没有接收返回值,无论用户在确认框选什么,表单都会照常提交。
修复方案

方案1:最小改动(修改现有绑定逻辑)

  1. 修改submit按钮的onclick绑定,增加return接收函数返回值
  2. 调整confirmAction函数,根据用户选择返回布尔值,选择「否」时返回false阻止表单提交

修改后的HTML代码:

<form method="POST" action="/delete/prop" >
<p class="card-text h6"> <b>Typology: </b> <%= book.typology %> </p>
<input type="hidden" name="id5" value=<%= book.id %> />
<input type="hidden" name="prop" value= "typology" />

<!-- 新增return接收函数返回值 -->
<input type="submit" value="Yes" class="button btn btn-danger" onclick="return confirmAction()" />
</form>

修改后的JavaScript代码:

<script type="text/javascript">
  function confirmAction() {
    let isConfirm = confirm("Are you sure to execute this action?");
    if (isConfirm) {
      alert("Action successfully executed");
      return true; // 确认时返回true,放行表单提交
    } else {
      alert("Action cancelled");
      return false; // 取消时返回false,阻止表单提交
    }
  }
</script>

方案2:更稳妥的表单submit事件监听(推荐)

直接绑定表单的提交事件,避免按钮绑定遗漏的问题,代码更易维护:

<!-- 给表单新增id属性 -->
<form method="POST" action="/delete/prop" id="deleteForm">
<p class="card-text h6"> <b>Typology: </b> <%= book.typology %> </p>
<input type="hidden" name="id5" value=<%= book.id %> />
<input type="hidden" name="prop" value= "typology" />

<input type="submit" value="Yes" class="button btn btn-danger" />
</form>
<script type="text/javascript">
  document.querySelector('#deleteForm').addEventListener('submit', function(e) {
    let isConfirm = confirm("Are you sure to execute this action?");
    if (!isConfirm) {
      e.preventDefault(); // 直接阻止表单默认提交行为
      alert("Action cancelled");
    } else {
      alert("Action successfully executed");
    }
  })
</script>

内容的提问来源于stack exchange,提问作者Arturo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:03:00