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

如何在jQuery Ajax中获取dselect动态下拉框的选中值?

解决dselect插件设置选中值失效的问题

直接操作原生<select>的val()方法无法同步dselect的UI状态,因为这个插件是基于原生select生成独立的美化界面,需要触发插件的更新逻辑才能同步选中状态。

解决方案一:调用插件内置更新函数

在AJAX的success回调里,找到对应值的下拉选项按钮,手动调用dselectUpdate函数同步UI:

success: function(data) {
  // 处理分类下拉框
  const categoryVal = data.stock_category;
  // 先设置原生select的值,确保表单提交能拿到正确数据
  $('#stock_category').val(categoryVal);
  // 找到对应值的下拉选项按钮
  const categoryItem = $('#stock_category').next('.dselect-wrapper').find(`.dropdown-item[data-dselect-value="${categoryVal}"]`);
  // 调用插件更新函数同步UI
  if(categoryItem.length) {
    dselectUpdate(categoryItem[0], 'dselect-wrapper', 'form-select');
  }

  // 处理物品下拉框(逻辑一致)
  const itemVal = data.stock_item;
  $('#stock_item').val(itemVal);
  const itemItem = $('#stock_item').next('.dselect-wrapper').find(`.dropdown-item[data-dselect-value="${itemVal}"]`);
  if(itemItem.length) {
    dselectUpdate(itemItem[0], 'dselect-wrapper', 'form-select');
  }

  // 原有业务代码
  $('#modal_title').text('Edit Stock Out');
  $('#action').val('Edit');
  $('#submit_button').val('Edit');
  $('#stockOutModal').modal('show');
  $('#hidden_id').val(stock_id);
}

解决方案二:触发原生select的change事件

如果dselect插件监听了原生select的change事件,可直接触发事件实现自动同步:

success: function(data) {
  $('#stock_category').val(data.stock_category).trigger('change');
  $('#stock_item').val(data.stock_item).trigger('change');

  // 原有业务代码
  $('#modal_title').text('Edit Stock Out');
  $('#action').val('Edit');
  $('#submit_button').val('Edit');
  $('#stockOutModal').modal('show');
  $('#hidden_id').val(stock_id);
}

额外提醒

你的HTML代码里出现了重复的下拉触发按钮(select对应的dselect-wrapper外还有一个独立的button),这属于冗余代码,建议检查删除,避免干扰插件正常渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:21:40