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

jQuery提交表单时如何区分提交按钮仅在发布内容时执行校验

解决方法

方法一:标记提交按钮类型(无按钮结构改动)

你可以通过临时变量记录用户点击的按钮类型,在校验逻辑中判断是否执行校验:

  1. 首先为两个提交按钮增加标识,方便绑定事件:
<button type="submit" id="publish-btn">Submit</button>
<button type="submit" name="rdraft" value="1" id="draft-btn">Save to drafts</button>
  1. 编写对应的JS逻辑:
// 标记是否为草稿提交
let isDraft = false;

// 草稿按钮点击时标记状态
$('#draft-btn').click(() => {
  isDraft = true;
})

// 发布按钮点击时重置状态
$('#publish-btn').click(() => {
  isDraft = false;
})

$('#form').submit(function(e) {
  // 草稿提交直接放行,不校验
  if(isDraft) return true;

  // 原有校验逻辑写在这里
  // 校验不通过可通过 e.preventDefault() 阻止提交
})

这种方法不需要修改原有的表单提交参数逻辑,草稿按钮的rdraft参数会自动随表单提交,同时兼容回车提交场景:回车默认触发第一个提交按钮(发布),会正常执行校验。


方法二:修改草稿按钮类型,手动提交(更简洁)

你可以把草稿按钮改为普通按钮,点击时直接调用原生表单提交方法跳过jQuery的submit事件校验:

  1. 修改按钮结构:
<button type="submit">Submit</button>
<!-- 把type从submit改为button -->
<button type="button" name="rdraft" value="1" id="draft-btn">Save to drafts</button>
  1. 编写JS逻辑:
// 原有submit事件只处理发布按钮的校验逻辑
$('#form').submit(function(e) {
  // 原有校验逻辑
})

// 草稿按钮手动提交表单
$('#draft-btn').click(function() {
  // 追加rdraft参数到表单中
  $('#form').append('<input type="hidden" name="rdraft" value="1">');
  // 原生submit方法不会触发jQuery绑定的submit事件,直接提交
  $('#form')[0].submit();
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:45:02