HTML5 type=rangeコントロールの各ステップにラベルテキストを設定する方法はありますか。基本的に私は範囲コントロールを持っており、<input type="range" step=1 min=0 max=4>
ステップごとにいくつかのラベルをコントロールに表示したいと思います。これを行う方法はありますか?
60449 次
7 に答える
26
私はあなたのためにまとめました。
// define a lookup for what text should be displayed for each value in your range
var rangeValues =
{
"1": "You've selected option 1!",
"2": "...and now option 2!",
"3": "...stackoverflow rocks for 3!",
"4": "...and a custom label 4!"
};
$(function () {
// on page load, set the text of the label based the value of the range
$('#rangeText').text(rangeValues[$('#rangeInput').val()]);
// setup an event handler to set the text when the range value is dragged (see event for input) or changed (see event for change)
$('#rangeInput').on('input change', function () {
$('#rangeText').text(rangeValues[$(this).val()]);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="range" id="rangeInput" name="rangeInput" step="1" min="1" max="4">
<label id="rangeText" />
于 2013-03-06T14:09:13.743 に答える
1
OP、
スライダーの現在の状態の両方のラベルとして機能range
する対応するタグと、スライダーの値を変更するためのトリガーを使用する入力を使用するデモをまとめました。<p>
プランク
http://plnkr.co/edit/ArOkBVvUVUvtng1oktZG?p=preview。
HTMLマークアップ
<div class="rangeWrapper">
<input id="slide" type="range" min="1" max="4" step="1" value="1" />
<p class="rangeLabel selected">Label A</p>
<p class="rangeLabel">Label B</p>
<p class="rangeLabel">Label C</p>
<p class="rangeLabel">Label D</p>
</div>
Javascript
$(document).ready(function(){
$("input[type='range']").change(function() {
slider = $(this);
value = (slider.val() -1);
$('p.rangeLabel').removeClass('selected');
$('p.rangeLabel:eq(' + value + ')').addClass('selected');
});
$('p.rangeLabel').bind('click', function(){
label = $(this);
value = label.index();
$("input[type='range']").attr('value', value)
.trigger('change');
});
});
CSS
input[type="range"] {
width: 100%;
}
p.rangeLabel {
font-family: "Arial", sans-serif;
padding: 5px;
margin: 5px 0;
background: rgb(136,136,136);
font-size: 15px;
line-height 20px;
}
p.rangeLabel:hover {
background-color: rgb(3, 82, 3);
color: #fff;
cursor: pointer;
}
p.rangeLabel.selected {
background-color: rgb(8, 173, 8);
color: rgb(255,255,255);
}
また、現在の値をラベル/フラグとしてユーザーに表示することに興味がある場合は、(多くではなく)範囲スライダーの値のバブルに関するChrisCoyierによるすばらしい記事があります。
于 2013-03-13T03:27:08.047 に答える
0
jSliderを使用できます。範囲入力用のjQueryスライダープラグイン。
https://github.com/egorkhmelev/jslider
デモとドキュメントをチェックしてください。お役に立てれば。
于 2013-03-13T05:57:06.587 に答える
0
それを行うためのネイティブな方法はありません。また、input[type=range] はほとんどサポートされていないため、jQuery UI スライダーの使用と、こちらの回答にあるラベルの付け方をお勧めします。
于 2013-03-13T02:56:43.573 に答える