我正在尝试将滑块标记为jQuery UI Slider Labels Under Slider。我不是在处理ui-slider,而是使用来自oTree的滑块小部件。
问题Mandatory slider in oTree/django的优秀答案解释了如何使用jQuery选择器选择oTree滑块:
$('[data-slider] input[type="range"]')
我有一个显示当前所选值(0-100)的滑块。我想要做的是在滑块下方添加一些标签(例如,如果滑块值是温度,则为“冷”,“中性”,“暖”)。我尝试使用以下代码选择oTree滑块并附加标签,但不显示任何标签。
{% formfield player.mySliderInput type="Slider"}
{% block scripts %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
var mylabel = $('<label>25</label>').css('left', '25%');
$('[data-slider] input[type="range"]').append(mylabel);
});
</script>
{% endblock %}
页面的HTML如下所示:
<div class="form-group required">
<label class="col-form-label" for="id_myInput">How hot is it? (0-100):</label>
<div class="controls field-myInput">
<div class="input-group slider" data-slider>
<input type="range" name="myInput" value="None"
step="1"
min="0"
max="100"
required
id="id_myInput"
class="form-control"
/>
<div class="input-group-append">
<span class="input-group-text" data-slider-value title="current value"></span>
</div>
</div>
</div>
</div>
我不确定选择哪个对象(div?input?)并将标签附加到。
答案 0 :(得分:2)
从那以后oTree稍微改变了表单类命名。
使用以下代码:
{% block scripts %}
<script>
$(function () {
var SliderTouched = false;
var selector = $('[data-slider] input[type="range"]');
selector.change(function () {
SliderTouched = true;
});
$("#form").submit(function (event) {
if (!SliderTouched) {
event.preventDefault();
}
});
});
</script>
{% endblock %}
它的作用如下:
false
。 SliderTouched
)仍为false,否则表单将不会提交答案 1 :(得分:1)
更新..
根据OP注释,最终被追加到oTree滑块的选择器为.controls
var $label = $('<label>sometext</label>').css('left', '10%');
$('.controls').append($label);
原创......
使用has属性选择器(https://api.jquery.com/has-attribute-selector/),您可以按属性进行选择。
<input type="range" data-slider="someval">
给出上面的html ..你可以选择它......
[data-slider]
添加input[type="range"]
将进一步限定结果,仅包括类型范围。