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

jQuery动态生成联动select赋值成功但值不显示问题求助

问题原因

  • select控件使用val()赋值的前提是,控件内部存在对应value属性的<option>节点。你的代码中第二个联动select(.slart1)默认仅包含1个空值option,你赋值的目标值没有对应的option节点,因此无法展示选中效果。input属于纯输入类控件无需预设选项,因此赋值逻辑可以正常生效。

解决方案

你需要在给第二个select赋值前,先根据第一个select的选中值,把对应可选的option节点渲染到第二个select中,再执行赋值操作,修正后的代码如下:

const campos_max = 10;
let x = 0;
$('#add_field').click(function(e) {
  e.preventDefault();
  if (x < campos_max) {
    $('#listas').append(`<div class="teste"><select class="form-control1 Reff${x}" name="Ref[]"><option></option></select><select class="slart1 form-control1 Desigg${x}" name="Reef1"><option ></option></select></div>`)
  }
  var html = $(`.Reff${x}`);
  html.append(`<option value="A">A</option><option value="B">B</option><option value="C">C</option>`);
  x++;
});

$(document).on("change", "select[class*=Reff]", function() {
  var Refart = $(this).val();
  var $secondSelect = $(this).closest(".teste").find(".slart1");
  // 清空原有option
  $secondSelect.empty();
  // 这里替换为你的实际数据库查询逻辑,拿到对应第二个select的选项列表
  let optionList = [];
  if(Refart === 'A') {
    optionList = [{value: 'A1', text: 'A选项对应的选项1'}, {value: 'A2', text: 'A选项对应的选项2'}]
  } else if(Refart === 'B') {
    optionList = [{value: 'B1', text: 'B选项对应的选项1'}, {value: 'B2', text: 'B选项对应的选项2'}]
  } else if(Refart === 'C') {
    optionList = [{value: 'C1', text: 'C选项对应的选项1'}, {value: 'C2', text: 'C选项对应的选项2'}]
  }
  // 渲染option到第二个select
  optionList.forEach(item => {
    $secondSelect.append(`<option value="${item.value}">${item.text}</option>`)
  })
  // 此时再赋值就可以正常展示选中效果,替换为你实际要选中的值即可
  const targetValue = optionList[0].value;
  $secondSelect.val(targetValue)
});

原有HTML代码无需改动。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:45:05