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

如何让jQuery serializeArray获取下拉选中文本,且少改Blade代码?

解决serializeArray()无法获取下拉框选中文本的问题

不用修改Blade模板,直接在JS层面处理即可,核心思路是先获取serializeArray()的原始数据,再单独提取下拉框的选中文本,将其合并到数组中,具体实现如下:

单一下拉框场景

假设表单里的下拉框name为category_id,按以下步骤处理:

  1. 获取表单的serializeArray()原始数据
  2. 提取下拉框的选中文本
  3. 将文本以新增字段或扩展原有项的方式加入数组
$('form').submit(function(e) {
  e.preventDefault();
  const $form = $(this);
  
  // 用serialize()提交数据保存
  $.easyAjax({
    url: $form.attr('action'),
    type: $form.attr('method'),
    data: $form.serialize(),
    success: function() {
      // 1. 获取原始serializeArray数据
      let formDataArray = $form.serializeArray();
      
      // 2. 提取下拉框选中文本
      const selectedText = $form.find('select[name="category_id"] option:selected').text();
      
      // 3. 方式一:新增独立字段到数组(推荐,不破坏原有结构)
      formDataArray.push({
        name: 'category_name', // 自定义字段名,对应选中文本
        value: selectedText
      });
      
      // 方式二:扩展原有下拉框项的属性(如果track函数需要从原项取文本)
      // const catItem = formDataArray.find(item => item.name === 'category_id');
      // if (catItem) catItem.text = selectedText;
      
      // 传给track函数
      track(formDataArray);
    }
  });
});

多个下拉框场景

如果表单有多个下拉框,可自动遍历所有select元素,批量添加对应选中文本:

$('form').submit(function(e) {
  e.preventDefault();
  const $form = $(this);
  
  $.easyAjax({
    url: $form.attr('action'),
    type: $form.attr('method'),
    data: $form.serialize(),
    success: function() {
      let formDataArray = $form.serializeArray();
      
      // 遍历所有下拉框,添加对应文本字段
      $form.find('select').each(function() {
        const selectName = $(this).attr('name');
        const selectedText = $(this).find('option:selected').text();
        
        // 字段名格式为【原name + _text】,比如category_id -> category_id_text
        formDataArray.push({
          name: `${selectName}_text`,
          value: selectedText
        });
      });
      
      track(formDataArray);
    }
  });
});

内容的提问来源于stack exchange,提问作者Techna-sta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:35:28