javascript - 向 Jquery Slider 添加参考点
问题描述
我使用 asp mvc 创建了一个数据输入 Web 应用程序,用户可以在其中提交他们的健康记录。数据保存到 SQL 数据库中,一切正常,但是,我想在 jQuery 滑块本身上添加一个固定参考点,以向用户显示他们最近的分数。也许以相应值的附加固定句柄的形式......但是我对javascript很陌生,到目前为止已经尝试过但失败了。
这是我的滑块的屏幕截图
底部的数字显示上一个条目的值
我已经为下面的滑块发布了我的 JS 代码。任何帮助将非常感激。
$(function() {
var handle = $("#pain-handle");
$("#painSlider").slider({
min: 0,
max: 10,
value: 0,
animate: "fast",
create: function() {
handle.text($(this).slider("value"));
}
}
);
$("#painSlider").slider().slider("pips", {
labels: {
first: "No Symptoms",
last: "Worst Symptoms"
}
}
).on("slidechange", function(e, ui) {
$("#pain-handle").text(ui.value);
}
);
}
);
解决方案
所以看起来你需要让特定的点子可见。仅供参考;滑块总是有值,但 css 隐藏了它们。所以我们只需要让正确的点数可见。
步骤是;
- 找出正确的值(建议将它们作为html-data)
- 为这些值添加一个 cssClass
- 使用 css 显示正确的点数(相应的样式)
首先,我稍微修改了您的 JS,以便您使用float
点数插件来显示滑块手柄上的值。它会比您的解决方案更强大。$(".slider").slider("float");
你可以在这里读到它; https://simeydotme.github.io/jQuery-ui-Slider-Pips/#options-float
最终的js代码是;
$(function() {
// here we assume 4 sliders all with the same css class
var $sliders = $(".painSlider");
$sliders.each( function(k, el) {
var $slider = $(el);
var previousValue = $slider.data( "previous" );
// handle different labels for best/worst
var firstLabel = $slider.hasClass( "bestWorst" ) ? "Best Imaginable" : "No Symptoms";
var lastLabel = $slider.hasClass( "bestWorst" ) ? "Worst Imaginable" : "Worst Symptoms";
$slider.slider({
min: 0,
max: 10,
value: 0,
animate: "fast"
})
.slider("pips", {
labels: {
first: firstLabel,
last: lastLabel
}
})
.slider("float")
// add a css class to the correct values
// so that we can style them to be shown
.find(".ui-slider-pip")
.eq( previousValue )
.find( ".ui-slider-label" )
.addClass( "previous-value" );
});
});
然后有一点 CSS 可以应用;
/* this is the magic to show the value */
.ui-slider-label.previous-value {
display: block;
}
/* these two styles are to show the "float"
labels inside the handle, instead of using
your own custom handle-text. */
.ui-slider-tip {
visibility: visible!important;
opacity: 1!important;
transform: none!important;
position: static!important;
background: transparent!important;
border: none!important;
color: white!important;
margin: auto!important;
width: auto!important;
}
.ui-slider-tip::before,
.ui-slider-tip::after {
display: none!important;
}
完整的工作代码可以在这里查看;https://jsfiddle.net/vzw53dge/
推荐阅读
- sql - Oracle:如何使用 sql 使用前一行的值填充行之间的空白
- javascript - 有没有办法为 Typescript 中的嵌套键访问创建类型保护?
- json - 如何从 Flutter 中的 JSON 文件中获取所有命令 ID?
- rust - 在不违反 Rust 借用规则的情况下,使用其值作为索引来更改向量
- javascript - 将图像从列中分离出来,让它跨越两列
- powerbi - 如何从两个表中按日期过滤的相关表中获取计数
- python - 在不使用太多 RAM 的情况下将列表转换为 numpy 数组
- sql - sql表比较-postgres
- sql-server - 使用随机值更新每个组 (SQL Server)
- ios - 通过 Xcode 11.4 推送功能在模拟器上触发 UNNotificationServiceExtension