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

如何使用JavaScript或jQuery实现两个滑块相互影响的滑动条

完整实现代码

页面结构

<link rel="stylesheet" href="//code.jquery.com/ui/1.13.0/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.js"></script>

<!-- 给输入框加id方便获取a值,增加基础属性避免非法输入 -->
<input type="number" id="inputA" value="100" min="0" max="200" />
<div id="myRange"></div>

JS逻辑

$(function() {
  // 初始化滑块
  $( "#myRange" ).slider({
    range: false,
    min: 0,
    max: 200,
    values: [80, 120],
    slide: function( event, ui ) {
      // 获取用户输入的a值,默认100避免空值报错
      const a = Number($('#inputA').val()) || 100;
      // 获取当前被拖动的滑块索引
      const activeHandleIndex = ui.handleIndex;
      let newX, newY;

      if (activeHandleIndex === 0) {
        // 拖动的是第一个x滑块,计算对应y值
        newX = ui.value;
        newY = 2 * a - newX;
        // 边界处理,y不能超出0~200范围,超出则禁止拖动
        if (newY < 0 || newY > 200) {
          return false;
        }
        // 同步更新第二个y滑块的数值
        $(this).slider('values', 1, newY);
      } else {
        // 拖动的是第二个y滑块,计算对应x值
        newY = ui.value;
        newX = 2 * a - newY;
        // 边界处理,x不能超出0~200范围,超出则禁止拖动
        if (newX < 0 || newX > 200) {
          return false;
        }
        // 同步更新第一个x滑块的数值
        $(this).slider('values', 0, newX);
      }
    }
  });

  // 监听a值输入变化,a修改后自动同步滑块满足联动规则
  $('#inputA').on('change input', function() {
    const a = Number($(this).val()) || 100;
    const currentX = $('#myRange').slider('values', 0);
    const targetY = 2 * a - currentX;
    // 边界校验通过后更新滑块
    if (targetY >=0 && targetY <=200) {
      $('#myRange').slider('values', 1, targetY);
    }
  })
});

核心修改说明

  • 给数值输入框添加了id标识,方便读取用户输入的a值,同时增加了输入边界限制避免非法值
  • 在slide回调中通过ui.handleIndex判断当前被拖动的滑块,根据联动公式计算另一个滑块的数值后主动更新
  • 增加了边界校验逻辑,避免计算出的滑块数值超出0~200的范围导致功能异常
  • 新增输入框的变化监听,用户修改a值后滑块会自动同步更新,始终满足y = 2a-x的关联关系

双滑块滑动条效果演示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:24:03