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

如何使用jQuery on()方法绑定多选择器多事件触发表单AJAX提交

解决方法

核心逻辑是把重复的AJAX提交逻辑抽为公共函数,分别绑定到表单提交、复选框触发两个场景即可,修改后代码如下:

// 抽离公共提交函数,统一维护提交逻辑
function submitForm(form) {
  const form_data = new FormData(form);
  // 可选:如果需要复选框未选中时也向后端传0,打开下方注释
  /*
  const checkbox = $(form).find('.checkbox_ajx')[0];
  if (checkbox && !checkbox.checked) {
    form_data.append(checkbox.name, 0);
  }
  */
  $.ajax({
    type: 'post',
    url: 'php/extra_update.php',
    data: form_data,
    processData: false,
    contentType: false,
    cache: false,
    success: function(data) {
      console.log(data);
      var jsondata = $.parseJSON(data);
      console.log(jsondata);
    }
  })
}

// 绑定表单submit事件
$('.formdataaj').each(function() {
  $(this).on('submit', function(e) {
    e.preventDefault();
    submitForm(this);
  })
  // 绑定内部复选框change事件
  $(this).on('change', '.checkbox_ajx', function() {
    submitForm($(this).closest('.formdataaj')[0]);
  })
})

实现说明

  • 公共函数submitForm接收表单DOM作为入参,所有提交逻辑统一在这里维护,后续修改只需要调整这一处即可同时生效于两个触发场景
  • 复选框绑定change事件,触发时自动查找所属的父级表单,调用公共提交方法,FormData会自动获取表单内所有控件的最新值,包括复选框的选中状态
  • 默认情况下复选框未选中时不会在FormData中携带对应参数,如果后端要求未选中时必须传0,打开代码中注释的可选处理段即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:36:04