jQuery 实现级联下拉框:根据第一个选择项动态禁用第二个下拉框中的相同选项

发布时间 - 2026-01-13 00:00:00    点击率:

本文介绍如何使用 jquery 实现两个下拉框的联动控制——当用户在第一个下拉框中选择某项后,自动禁用第二个下拉框中值相同的选项,防止重复选择。

在表单设计中,常需确保多个下拉框(

以下是一个简洁、可复用的实现方案:

$('select.form-control').on('change', function() {
    // 先重置所有 option 为启用状态(避免残留禁用)
    $('select.form-control option').prop('disabled', false);

    // 遍历每个 select,将其当前选中值作为“冲突值”,在其他 select 中禁用同 value 的 option
    $('select.form-control').each(function() {
        const selectedValue = this.value;
        if (!selectedValue) return; // 忽略未选择(空值)的情况

        // 在其余 select 中查找并禁用 value 相同的 option
        $('select.form-control').not(this).find('option').filter(function() {
            return this.value === selectedValue;
        }).prop('disabled', true);
    });
}).trigger('change'); // 初始化时执行一次,确保页面加载后状态同步

关键要点说明:

  • 使用 .not(this) 排除当前触发事件的下拉框,只影响其他下拉框;
  • .filter() 精准匹配 value 属性(而非文本内容),确保数据一致性;
  • .trigger('change') 在绑定后立即执行一次,使初始状态(如已有默认选中)也生效;
  • 建议为参与联动的下拉框统一添加类名(如 form-control),便于选择器精准控制;
  • 若存在多个下拉框(≥3个),该逻辑仍适用,会两两互斥,形成“所选值全局唯一”的约束。

⚠️ 注意事项:

  • 确保 jQuery 已正确引入(推荐 2.1+ 或 3.x 版本);
  • id 属性需唯一,示例中两个
  • 禁用的

通过以上方法,即可实现轻量、健壮的双向值互斥控制,提升表单交互合理性与数据准确性。


# jquery  # select  # Filter  # 事件  # dom  # this  # 选择器  # 下拉框  # 多个  # 表单  # 框中  # 是一个  # 互斥  # 第一个  # 一人  # 已有  # 遍历 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 电商网站制作价格怎么算,网上拍卖流程以及规则?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何用已有域名快速搭建网站?  nodejs redis 发布订阅机制封装实现方法及实例代码  Android自定义控件实现温度旋转按钮效果  浅述节点的创建及常见功能的实现  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  太平洋网站制作公司,网络用语太平洋是什么意思?  如何制作一个表白网站视频,关于勇敢表白的小标题?  高性价比服务器租赁——企业级配置与24小时运维服务  晋江文学城电脑版官网 晋江文学城网页版直接进入  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  如何在阿里云购买域名并搭建网站?  Python高阶函数应用_函数作为参数说明【指导】  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Mybatis 中的insertOrUpdate操作  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  JavaScript如何实现继承_有哪些常用方法  linux写shell需要注意的问题(必看)  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何快速生成高效建站系统源代码?  EditPlus中的正则表达式实战(6)  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  SQL查询语句优化的实用方法总结  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何使用Collections进行数据处理?(实用方法示例)  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  简历在线制作网站免费版,如何创建个人简历?  Swift中循环语句中的转移语句 break 和 continue  简历没回改:利用AI润色让你的文字更专业  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  *服务器网站为何频现安全漏洞?  javascript中的try catch异常捕获机制用法分析  Java类加载基本过程详细介绍  Laravel怎么在Controller之外的地方验证数据  如何用AI帮你把自己的生活经历写成一个有趣的故事?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  再谈Python中的字符串与字符编码(推荐)