如何将 jQuery UI 所有选定范围(不仅是最小值和最大值)加载到数组中

Posted

技术标签:

【中文标题】如何将 jQuery UI 所有选定范围(不仅是最小值和最大值)加载到数组中【英文标题】:How to Load jQuery UI All Selected Range (Not Only Min & Max) To an Array 【发布时间】:2019-02-11 17:01:27 【问题描述】:

您能否看一下这个演示,让我知道如何将选定的最小值和最大值之间的范围值加载到数组中

selected.push(ui.values); 给了我选择的最小值和最大值,这没关系,但我也需要介于两者之间的值

$( function() 
var selected =[];
    $( "#slider-range" ).slider(
      range: true,
      min: 133,
      max: 146,
      values: [ 133, 146 ],
      stop: function( event, ui ) 
        $( "#amount" ).val( "$" + ui.values[ 0 ] + " - $" + ui.values[ 1 ] );
        
         $("#dl-sv-input-mmr").val(ui.values[0] + " - " + ui.values[1]);
        selected.push(ui.values);
        console.log(selected)
      ,
      
    );
    $( "#amount" ).val( "$" + $( "#slider-range" ).slider( "values", 0 ) +
      " - $" + $( "#slider-range" ).slider( "values", 1 ) );
   );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<p>
  <label for="amount">Price range:</label>
  <input type="text" id="amount" readonly style="border:0; color:#f6931f; font-weight:bold;">
</p>
<div id="slider-range"></div>

【问题讨论】:

【参考方案1】:

请使用

selected.push(ui.values[0]);

而不是

selected.push(ui.values);

【讨论】:

【参考方案2】:

您可以添加一个循环来将值从下限推送到上限:

$(function() 
  $("#slider-range").slider(
    range: true,
    min: 133,
    max: 146,
    values: [133, 146],
    stop: function(event, ui) 
      var selected = [];
      $("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
      $("#dl-sv-input-mmr").val(ui.values[0] + " - " + ui.values[1]);
      for (var i = ui.values[0]; i <= ui.values[1]; i++) 
        selected.push(i);
      
      console.log(selected);
    ,

  );
  $("#amount").val("$" + $("#slider-range").slider("values", 0) +
    " - $" + $("#slider-range").slider("values", 1));
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<p>
  <label for="amount">Price range:</label>
  <input type="text" id="amount" readonly style="border:0; color:#f6931f; font-weight:bold;">
</p>
<div id="slider-range"></div>

【讨论】:

【参考方案3】:

也可以做一个简单的函数。

$(function() 
  function fillRange(start, end) 
    var arr = [];
    for (var i = start; i <= end; i++) 
      arr.push(i);
    
    return arr;
  
  var selected = [];
  $("#slider-range").slider(
    range: true,
    min: 133,
    max: 146,
    values: [133, 146],
    stop: function(event, ui) 
      $("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
      $("#dl-sv-input-mmr").val(ui.values[0] + " - " + ui.values[1]);
      selected = fillRange(ui.values[0], ui.values[1]);
      console.log(selected)
    ,
  );
  $("#amount").val("$" + $("#slider-range").slider("values", 0) + " - $" + $("#slider-range").slider("values", 1));
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<p>
  <label for="amount">Price range:</label>
  <input type="text" id="amount" readonly style="border:0; color:#f6931f; font-weight:bold;">
</p>
<div id="slider-range"></div>

这与 @SLePort 答案相同,只是包装在一个函数中。没有说明为什么您需要在数组中使用这些。可以考虑,如果需要,可以只测试一个值是否介于两个选定值之间。

【讨论】:

以上是关于如何将 jQuery UI 所有选定范围(不仅是最小值和最大值)加载到数组中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jquery ui 日期选择器中同时禁用周末和选定日期?

jQuery UI 选项卡 - 如何获取当前选定的选项卡索引

如何清除/重置 jQuery UI Datepicker 日历上的选定日期?

Jquery-ui自动完成选定的值

如何限制 jQuery UI 滑块的范围?

jquery ui滑块-如何反转范围选择