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

JavaScript中如何阻止点击非提交按钮时表单提交

解决表单内关闭按钮触发提交的问题

你遇到的问题其实很常见——HTML里的<button>元素默认的type属性是submit,哪怕你没显式写出来,点击这个关闭按钮时,浏览器也会把它当成提交按钮处理,进而触发表单的submit事件。

最简单直接的解决方式,就是给关闭按钮加上type="button"属性,明确告诉浏览器这只是个普通按钮,不会触发表单提交:

<form class="add_form" id="add_list_form">
  <input type="text" class="form-control" placeholder="Enter list title..." id="list_value" />
  <div class="mt-2">
    <button type="submit" class="btn btn-sm btn-success mr-1" id="add_list_btn">Add List</button>
    <!-- 新增type="button"属性 -->
    <button type="button" class="btn btn-sm btn-danger" id="close_btn">close</button>
  </div>
</form>
<script>
  const add_list_form = document.querySelector('#add_list_form');
  add_list_form.addEventListener('submit',(e)=>{
    e.preventDefault();
    console.log('form is submitted..')
  })
</script>

如果你不想修改HTML(虽然更推荐上面的语义化写法),也可以给关闭按钮绑定点击事件,手动阻止默认行为:

const closeBtn = document.querySelector('#close_btn');
closeBtn.addEventListener('click', (e) => {
  e.preventDefault();
  // 这里可以添加隐藏表单的逻辑,比如:
  // document.querySelector('#add_list_form').style.display = 'none';
});

两种方法都能解决问题,但第一种方法更符合HTML规范,代码也更简洁易懂。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:52:54