更新2
jQRangeSlider看起来很酷!它似乎更强大和可定制的方式!
更新1
我已经更新了我的小提琴从<select>
元素支持的值。它并不完美,只是一个证明的概念:
http://jsfiddle.net/UnsungHero97/ty8yaksm/13/
在演示中,滑块将显示从下拉列表里,它会尊重这些年来的变化(即1980年后1970年,而不是1970年后的1971年,就像下降)。
我所做的只是跟踪范围滑块中的索引,并将其映射到<select>
中相应的<option>
。这有点不好,我建议寻找更优雅的解决方案,但这是一个好的开始。
JS
$(function() {
var select = $('#years')[0];
var options = select.options;
var minYear = parseInt(options[0].text);
var maxYear = parseInt(options[options.length - 1].text);
var prevMin = minYear,
prevMax = maxYear,
prevLeftIndex = 0,
prevRightIndex = options.length - 1;
$("#slider-range").slider({
range: true,
min: 0,
max: options.length - 1,
values: [0, options.length - 1],
slide: function (event, ui) {
var left = ui.values[0],
right = ui.values[1],
newMin = minYear,
newMax = maxYear;
if (left === prevLeftIndex) {
newMax = options[right].text;
prevRightIndex = right;
}
else if (right === prevRightIndex) {
newMin = options[left].text;
prevLeftIndex = left;
}
$('#year-range').val("from: " + newMin + ", to: " + newMax);
$('#slider-range span').eq(0).text(newMin);
$('#slider-range span').eq(1).text(newMax);
}
});
// initialize default values
$('#year-range').val("from: " + minYear + ", to: " + maxYear);
$('#slider-range span').eq(0).text(minYear);
$('#slider-range span').eq(1).text(maxYear);
});
HTML
<label for="year-range"></label>
<input id="year-range" type="text" readonly/>
<br/>
<select id="years" readonly>
<option value="782">1970</option>
<option value="873">1980</option>
<option value="878">1985</option>
<option value="883">1990</option>
<option value="884">1991</option>
<option value="885">1992</option>
<option value="886">1993</option>
<option value="887">1994</option>
<option value="888">1995</option>
<option value="889">1996</option>
<option value="890">1997</option>
<option value="891">1998</option>
<option value="892">1999</option>
<option value="893">2000</option>
<option value="894">2001</option>
<option value="895">2002</option>
<option value="896">2003</option>
<option value="897">2004</option>
<option value="898">2005</option>
<option value="899">2006</option>
<option value="900">2007</option>
<option value="901">2008</option>
<option value="902">2009</option>
<option value="2844">2010</option>
<option value="2845">2011</option>
<option value="6045">2012</option>
<option value="8581">2013</option>
<option value="11017">2014</option>
<option value="13978">2015</option>
</select>
<div id="slider-range"></div>
CSS
input {
border: 0px;
font-weight: bold;
}
#slider-range {
width: 500px;
margin: auto;
}
.ui-slider .ui-slider-handle {
width: auto;
padding: 0px 4px;
}
你没有提到任何具体的,所以直到你告诉我们,你的要求是什么,你可以看看的jQuery UI的滑块:
http://jqueryui.com/slider/#range
对于<option>
演示,看看这个滑块(绑定到<select>
元素):
http://jqueryui.com/slider/#hotelrooms
我把一个快速和肮脏的演示给你的,你如何使用这个滑块的例子:
http://jsfiddle.net/UnsungHero97/ty8yaksm/4/
JS
$(function() {
// initialize the slider
$("#slider-range").slider({
range: true,
min: 0,
max: 100,
values: [16, 64],
slide: function (event, ui) {
$("#amount").val("$" + ui.values[0] + " - $" + ui.values[1]);
$('#slider-range span').eq(0).text(ui.values[0]);
$('#slider-range span').eq(1).text(ui.values[1]);
}
});
// initialize default values
var leftAmount = $("#slider-range").slider("values", 0);
var rightAmount = $("#slider-range").slider("values", 1);
$("#amount").val("$" + leftAmount + " - $" + rightAmount);
$('#slider-range span').eq(0).text(leftAmount);
$('#slider-range span').eq(1).text(rightAmount);
});
HTML
<p>
<label for="amount">Range:</label>
<input type="text" id="amount" readonly>
</p>
<div id="slider-range"></div>
CSS
.ui-slider .ui-slider-handle {
width: auto;
padding: 0px 4px;
}
我想你回答与选择的例子可以帮助。但只有从低到高的价值,当我需要范围滑块。我会尽力改变它。 – sanchahous 2015-02-23 19:17:51
我不知道我不能让它工作。你能不能展示你的jsfiddle范围滑块范例如何与选择器选项一起工作? – sanchahous 2015-02-23 20:15:28
我正在研究它......将很快有更新! – Hristo 2015-02-23 20:38:11