jQuery Mobile双范围滑块工作,但有缺陷
jQuery Mobile dual range slider working but buggy
我能够通过在jQuery Mobile框架上将滑块放在彼此的顶部来制作双范围滑块。
此外,javascript的设置使左手拇指不会超过右手拇指。
然而,这个函数有点bug,我想知道是否有人能很好地解决这个问题。
下面是一个例子:
$('#buying_slider_min').change(function() {
var min = $(this).val();
var max = $('#buying_slider_max').val();
if(min > max) {
$('#buying_slider_max').val(min);
$('.maxBuyingSlider').slider('refresh');
}
});
$('#buying_slider_max').change(function() {
var min = $('#buying_slider_min').val();
var max = $(this).val();
if(min > max) {
$('#buying_slider_min').val(max);
$('.minBuyingSlider').slider('refresh');
}
});
请在此处查看
修改脚本部分如下:
$('#buying_slider_min').change(function() {
var min = parseInt($(this).val());
var max = parseInt($('#buying_slider_max').val());
if (min > max) {
$(this).val(max);
$(this).slider('refresh');
}
});
$('#buying_slider_max').change(function() {
var min = parseInt($('#buying_slider_min').val());
var max = parseInt($(this).val());
if (min > max) {
$(this).val(min);
$(this).slider('refresh');
}
});
更新的小提琴-http://jsfiddle.net/NkjQr/12/
编辑-代码解释:
1) 使用val()
方法获取的滑块值是一个字符串,之前您正在比较这些字符串,其中应该比较数字。由于对字符串进行了比较,代码没有按应有的方式工作。将字符串转换为数字,然后进行最小值和最大值比较。
2) 如果slider_min值超过了slider_max值,则slider_mine值应保持在slider.max值。类似地,如果slider_max值低于slider_min值,则slider_maxvalue应保持在slider_minvalue。这些都在相应的if
语句
我认为滑块应该这样工作:
http://jsfiddle.net/NkjQr/387/
我更新了http://jsfiddle.net/NkjQr/12/使用jQuery Mobile 1.2,示例似乎仍然运行良好:http://jsfiddle.net/fbGV4/1/
<a class='filename' target="_blank" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.css" title="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.css">
我更新了当前的js fiddle,使其可以使用无限的滑块句柄,并更新到jQuery mobile 1.3.1。请在下面查看。
http://jsfiddle.net/NkjQr/1781/
使用Jquery 1.9.1和Jquery Mobile 1.3.1 进行测试
html
<div class="priceRangeInfo">
<label for="buying_slider_min">Price</label>
<input type="range" name="buying_slider_1" id="buying_slider_1" slider="1" class="BuyingSlider " value="0" min="0" max="100" />
<input type="range" name="buying_slider_2" id="buying_slider_2" slider="2" class="BuyingSlider" value="80" min="0" max="100" data-track-theme="e"/>
<input type="range" name="buying_slider_3" id="buying_slider_3" slider="3" class="BuyingSlider" value="100" min="0" max="100" data-track-theme="e"/>
</div>
Javascript
var handles = 3;
$('.BuyingSlider').change(function() {
var currentval = parseInt($(this).attr("slider"));
if(currentval == 1){
var min_num = 1;
var min = 0;
}else{
var min_num = currentval-1;
var min = parseInt($('#buying_slider_'+min_num).val());
}
if(currentval == handles){
var max_num = handles;
var max = 100;
}else{
var max_num = currentval+1;
var max = parseInt($('#buying_slider_'+max_num).val());
}
var current = parseInt($('#buying_slider_'+currentval).val());
if (current > max) {
$(this).val(max);
$(this).slider('refresh');
}
if (current < min) {
$(this).val(min);
$(this).slider('refresh');
}
});
CSS
.ui-slider-track{
width: 300px;
}
.priceRangeInfo{
position: relative;
height: 30px;
margin-top: 60px;
}
.priceRangeInfo label{
position: absolute;
top: -30px;
left: 10px;
} /* moves label field */
.priceRangeInfo #buying_slider_1{
top: -40px;
position: absolute;
left: 100px;
} /* moves first input field */
.priceRangeInfo #buying_slider_2{
top: -40px;
position: absolute;
left: 170px;
}
.priceRangeInfo #buying_slider_3{
top: -40px;
position: absolute;
left: 240px;
} /* move second input field */
.priceRangeInfo div.ui-slider{
position: absolute;
} /* move both sliders - adressing 1st slider with CSS is hard */
.priceRangeInfo div:last-child{
position: absolute;
left: 0px;
}
- 是否有任何设置阻止JavaScript在系统上工作
- Doppio:多线程是如何工作的,有什么限制吗
- 为什么jQuery代码段在没有IFrame的情况下可以工作,而在有IFrame时却不能工作
- 为什么我需要在setTimeout中有匿名函数才能使此代码工作
- 有没有办法把它们串在一起,这样它们基本上可以同时工作
- 有没有人能够得到这个要求或调试NPM模块在浏览器中工作
- JavaScript while循环没有'不能在有条件的情况下工作
- 使用Javascript客户端进行REST基本身份验证的安全缺陷是什么(如果有的话)
- 是否有可能在 threejs 中创建一个工作的计算机界面
- jquery animate非常有缺陷
- 有缺陷的视频标签
- 让我的jQuery插件工作有困难.TypeError:$(..).functionName不是函数
- 如何删除有缺陷的服务工作线程,或实现“终止开关”
- jQuery Mobile双范围滑块工作,但有缺陷
- jquery-ui弹出框draggable有缺陷
- 这是对复选框输入的默认单击事件的核心误解,还是有缺陷的代码?
- 如何帮助ie的有缺陷的垃圾收集器
- 当我滚动到每个有缺陷的部分时,菜单项得到突出显示
- 对于为什么这个jQuery不能工作有什么想法吗?
- 为什么CSS转换工作有延迟