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

jQuery三级联动下拉选值重复致入库错误,如何改为按ID过滤?

需要修改的核心部分

你需要同时调整HTML属性规则和jQuery联动匹配逻辑两部分,修改后可以实现「联动逻辑靠id匹配、提交value为自身真实入库值」的需求,避免重复问题。

1. 先调整HTML属性规则

注意:HTML规范要求id属性必须全局唯一,你原有代码里brgy的多个option共用相同id属于错误写法,我们改用自定义关联属性实现绑定,更符合规范:

  • region的option:value存要入库的地区名称,id设为唯一标识
  • city的option:value存要入库的城市名称,新增data-region-id属性存储对应上级region的option的id,自身id设为唯一标识
  • brgy的option:value存要入库的 barangay 名称,新增data-city-id属性存储对应上级city的option的id

调整后的HTML示例:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>SELECT YOUR THE REGION
<select type="text" value="" id="region">
  <option value="">Please Select Your Region</option>
  <option value="CompostelaValey" id="CompostelaValey">CompostelaValey</option>
  <option value="DavaoOriental" id="DavaoOriental">DavaoOriental</option>
 </select>
</p><br><br>

<p>SELECT YOUR THE CITY
 <select type="text" name="city" id="city">
   <option value="">Please Select City/Municipality</option>
  <option value="Baganga" data-region-id="DavaoOriental" id="Baganga">Baganga</option>
  <option value="Maragusan" data-region-id="CompostelaValey" id="Maragusan">Maragusan</option>
  <option value="MatiCity" data-region-id="DavaoOriental" id="MatiCity">MatiCity</option>
  </select>
</p><br><br>

<p>SELECT YOUR THE BARANGAY
  <select type="text" name="brgy" id="brgy">
    <option value="">Please Select Your Barangay</option>
   <option value="Baculin" data-city-id="Baganga">Baculin</option>
    <option value="Batawan" data-city-id="Baganga">Batawan</option>
   <option value="Batiano" data-city-id="Baganga">Batiano</option>
    <option value="Binondo" data-city-id="Baganga">Binondo</option>
    <option value="Bobonao" data-city-id="Baganga">Bobonao</option>
   <option value="Campawan" data-city-id="Baganga">Campawan</option>
   <option value="Central" data-city-id="Baganga">Central</option>
   <option value="Dapnan" data-city-id="Baganga">Dapnan</option>
    <option value="Kinablangan" data-city-id="Baganga">Kinablangan</option>
   <option value="Lambajon" data-city-id="Baganga">Lambajon</option>
   <option value="Lucod" data-city-id="Baganga">Lucod</option>
   <option value="Mahan-ub" data-city-id="Baganga">Mahan-ub</option>
   <option value="Mikit" data-city-id="Baganga">Mikit</option>
  <option value="Central" data-city-id="MatiCity">Central</option>
   <option value="Badas" data-city-id="MatiCity">Badas</option>
   <option value="Matiao" data-city-id="MatiCity">Matiao</option>
   <option value="kalapagan" data-city-id="Maragusan">kalapagan</option>
</select>
</p><br><br>

2. 修改jQuery代码的匹配逻辑

原有jQuery代码里的关联匹配是基于value属性,现在改成基于选中项的id和自定义关联属性匹配即可,修改后的完整代码:

$(document).ready(function() {
  $("#city option").hide();
  $("#brgy option").hide();

  $("#region").change(function() {
    // 取当前选中地区的id作为关联值
    var regionId = $(this).find(":selected").prop("id");
    $("#city option").hide();
    $("#city").val("");
    // 匹配对应上级地区的城市选项显示
    $("#city option[data-region-id='" + regionId + "']").show();
    $("#city").change();
  });

  $("#city").change(function() {
    // 取当前选中城市的id作为关联值
    var cityId = $(this).find(":selected").prop("id");
    $("#brgy option").hide();
    $("#brgy").val("");
    // 匹配对应上级城市的 barangay 选项显示
    $("#brgy option[data-city-id='" + cityId + "']").show();
  });
});

修改完成后,三个下拉框的value属性存储的都是自身要入库的真实内容,联动逻辑完全靠id和关联属性匹配,不会再出现提交值重复的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:06:01