将步骤数限制为第一个和最后一个数组元素
Limit number of steps to first and last array element
>我有一个值数组,可以通过操作滑块 ui 句柄或单击将值增加/减少一步的按钮来选择。问题是当它到达最后一个/第一个元素时,如果通过单击再添加一步,该值将变为空白。我正在寻找一种解决方案,通过数组中的元素数量或类似的东西来限制点击。
小提琴
.JS
$(function () {
var sizes = [
"0 years",
"1 year",
"2 years",
"3 years",
"4 years",
"5 years",
"6 years",
"7 years"
];
$("#slider-range-max3").slider(
{
range: "max",
min: 0,
max: sizes.length - 1,
step: 1,
create: function(event, ui) {
$("#sup").val(sizes[0]);
},
slide: function (event, ui) {
$("#sup").val(sizes[ui.value]);
$("#sup").text(sizes[ui.value]);
var value = $(this).val(),
button = $("#sup").val(sizes[ui.value]);
setTimeout(function () {
/* update text after jQM refreshes slider */
button.text(custom[value]);
}, 0);
}
}
);
$("#plus3").click(function () {
var value = $("#slider-range-max3").slider("value");
var step = $("#slider-range-max3").slider("option", "step");
$("#slider-range-max3").slider("value", value + step);
$("#sup").val(sizes[value+step]).text(sizes[value+step]);
});
$("#minus3").click(function () {
var value = $("#slider-range-max3").slider("value")
var step = $("#slider-range-max3").slider("option", "step");
$("#slider-range-max3").slider("value", value - step);
$("#sup").val(sizes[value-step]).text(sizes[value-step]);
});
});
.HTML
<div id="quote-input" class="slider-input">
<div id="minus3" class="minus"><span>-</span></div>
<div id="plus3" class="plus">+</div>
<input type="text" id="sup" class="slider-value">
<div id="slider-range-max3" class="slider">
<span class="ui-slider-handle"></span>
</div>
它可以简单地检查函数内的数组长度
$("#plus3").click(function () {
var value = $("#slider-range-max3").slider("value");
var step = $("#slider-range-max3").slider("option", "step");
if (value === sizes.length-1)
return;//it bails out here in case
$("#slider-range-max3").slider("value", value + step);
$("#sup").val(sizes[value+step]).text(sizes[value+step]);
});
小提琴
一些简单的if
就可以了:
$("#plus3").click(function () {
var value = $("#slider-range-max3").slider("value");
var step = $("#slider-range-max3").slider("option", "step");
if(value < (sizes.length-1)){
$("#slider-range-max3").slider("value", value + step);
$("#sup").val(sizes[value+step]).text(sizes[value+step]);
}
});
$("#minus3").click(function () {
var value = $("#slider-range-max3").slider("value")
var step = $("#slider-range-max3").slider("option", "step");
if(value){
$("#slider-range-max3").slider("value", value - step);
$("#sup").val(sizes[value-step]).text(sizes[value-step]);
}
});
小提琴
只是限制它:
if(value+step < sizes.length){
$("#slider-range-max3").slider("value", value + step);
$("#sup").val(sizes[value+step]).text(sizes[value+step]);
}
if(value-step > -1){
$("#slider-range-max3").slider("value", value - step);
$("#sup").val(sizes[value-step]).text(sizes[value-step]);
}
小提琴
如果您只更改滑块的更改事件中的文本,而不是按钮本身中的文本,则不需要任何其他检查(滑块不会更改为无效范围):
var sizes = [ "0 years", "1 year", "2 years", "3 years", "4 years", "5 years", "6 years", "7 years" ];
var slider = $("#slider-range-max3").slider({
range: "max",
min: 0,
max: sizes.length - 1,
step: 1,
create: function(event, ui) {
$("#sup").val(sizes[0]);
},
slide: updateText,
change: updateText
});
function updateText(event, ui){
$("#sup").val(sizes[ui.value]);
}
function Inc(step){
slider.slider("value", slider.slider("value") + step);
}
$("#plus3").click(function () {
Inc(1);
});
$("#minus3").click(function () {
Inc(-1);
});
小提琴
或者,或者另外,您可以跳过使用数组并动态构建文本(唯一的例外是省略"1 年"上的尾随 s)
编辑 为了完整起见,一个没有 size 数组的示例实现:https://jsfiddle.net/uq4eakah/7/
相关文章:
- 无法获取vis.js最后一个或第一个选定的网络节点
- 使用javascript替换字符串中除第一个和最后一个之外的所有字符
- 浮动图-如何在x轴上显示第一个月和最后一个月的minTickSize:[2,“month&”]
- 第一个元素和最后一个元素之间的连续循环
- 引导程序转盘隐藏第一个和最后一个控件
- 使用jquery以dd-mmm-yyyy格式获取给定日期后的第一个日期和最后一个日期
- 删除第一个和最后一个<br/>来自字符串
- 如何删除字符串的第一个和最后一个字符
- jQuery删除除第一个和最后一个数字之外的所有数字
- Jquery幻灯片中的列表,连接第一个和最后一个列表元素以创建旋转木马
- 谷歌地图没有显示地图上的所有目的地标记,只有第一个和最后一个
- 谷歌图表,有问题地获取第一个和最后一个点的趋势线值
- jQuery slice() 方法 在 html 中选择元素(第一个/最后一个)
- 数据表:禁用第一个下一个上一个最后一个,并在处理时显示/搜索记录
- Javascript 中的第一个下一个/上一个子字符串位置
- JavaScript 替换第一个/最后一个字母并将中间文本括在标签中
- 关于使用类名定位第一个上一个最近元素的问题
- 猫头鹰旋转木马,到达第一个/最后一个项目后导航被禁用
- (HTML / JS)添加“,“在第二个最后一个字串和隐藏"&"如果字符串中有一个单词
- 使用Jquery获取匹配条件的第一个前一个元素