Bootstrap 滑块范围值文本框
Bootstrap slider range value text boxes
所以基本上我试图实现这个 jsfiddle 中的内容:
http://jsfiddle.net/FPCRb/
有一个数值范围的滑动条和两个文本框。
这是我的 HTML table:
<table class="table borderless">
<thead>
<tr>
<th>Rank</th>
<th>+/-</th>
<th>Searches</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="radio" name="optradio" class="custom"> ALL</td>
<td><input type="radio" name="optradio2" class="custom2"> ALL</td>
<td><input id="slider" type="text" class="span2" value="" data-slider-min="10" data-slider-max="1000" data-slider-step="1" data-slider-value="[0,1000]" data-slider-id="RC" id="R"/></td>
<td><button id="reset" type="button" class="btn btn-success">Reset</button></td>
</tr>
<tr>
<td><input type="checkbox" class="custom-selector"> Rank 1-10</td>
<td><input type="checkbox" class="custom-selector2"> Up</td>
<td><input type="text" class="form-control form-inline col-xs-1 sliderValue" style="width: 60px" placeholder="From" data-index="0" value="10">
<label class="col-xs-1" style="font-size: 22px">→</label>
<input type="text" class="form-control form-inline col-xs-1 sliderValue" style="width: 60px" placeholder="To" data-index="1" value="90"></td>
</tr>
<tr>
<td><input type="checkbox" class="custom-selector"> Rank 11-20</td>
<td><input type="checkbox" class="custom-selector2"> Down</td>
<td><button id="reset" type="button" class="btn btn-info">Set interval</button></td>
</tr>
<tr>
<td><input type="checkbox" class="custom-selector"> Rank 21-100</td>
<td><input type="checkbox" class="custom-selector2"> No movement</td>
</tr>
<tr>
<td><input type="checkbox" class="custom-selector"> Not in top 100</td>
</tr>
</tbody>
</table>
这是我的脚本:
$(document).ready(function() {
$("#slider").slider({
min: 0,
max: 1000,
step: 1,
range: true,
values: [10, 90],
tooltip: 'always',
slide: function(event, ui) {
for (var i = 0; i < ui.values.length; ++i) {
$("input.sliderValue[data-index=" + i + "]").val(ui.values[i]);
}
}
});
$("input.sliderValue").change(function() {
var $this = $(this);
$("#slider").slider("values", $this.data("index"), $this.val());
});
});
我需要能够在文本框中指定值并使用滑块以及重置按钮。
看起来是我想要的,但是移动滑块不会改变文本框,反之亦然,我错过了什么?
在您 link 的 JSFiddle 中,ID 为 "slider" 的元素是空的 div,jQueryUI 使用自定义滑块标记正确填充了该元素。但是在您的代码中,该元素是一个输入。将其替换为空的 div,如文档中所示:
我尝试了代码,但是当我发出警报时这部分不起作用(我在 Firefox 上工作):
slide: function(event, ui) { alert(); // this alert is not show up!!
for (var i = 0; i < ui.values.length; ++i) {
$("input.sliderValue[data-index=" + i + "]").val(ui.values[i]);
}
}
所以我改了。试试这个。它对我有用:
$("#slider").slider({
min: 0,
max: 100,
step: 1,
range: true,
values: [10, 90],
});
$('#slider').on('slide', function (ev) {
console.log(this.value[0]);
console.log(this.value[1]);
$('.sliderValue[data-index="0"]').val(this.value[0]);
$('.sliderValue[data-index="1"]').val(this.value[1]);
});
所以基本上我试图实现这个 jsfiddle 中的内容: http://jsfiddle.net/FPCRb/ 有一个数值范围的滑动条和两个文本框。
这是我的 HTML table:
<table class="table borderless">
<thead>
<tr>
<th>Rank</th>
<th>+/-</th>
<th>Searches</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="radio" name="optradio" class="custom"> ALL</td>
<td><input type="radio" name="optradio2" class="custom2"> ALL</td>
<td><input id="slider" type="text" class="span2" value="" data-slider-min="10" data-slider-max="1000" data-slider-step="1" data-slider-value="[0,1000]" data-slider-id="RC" id="R"/></td>
<td><button id="reset" type="button" class="btn btn-success">Reset</button></td>
</tr>
<tr>
<td><input type="checkbox" class="custom-selector"> Rank 1-10</td>
<td><input type="checkbox" class="custom-selector2"> Up</td>
<td><input type="text" class="form-control form-inline col-xs-1 sliderValue" style="width: 60px" placeholder="From" data-index="0" value="10">
<label class="col-xs-1" style="font-size: 22px">→</label>
<input type="text" class="form-control form-inline col-xs-1 sliderValue" style="width: 60px" placeholder="To" data-index="1" value="90"></td>
</tr>
<tr>
<td><input type="checkbox" class="custom-selector"> Rank 11-20</td>
<td><input type="checkbox" class="custom-selector2"> Down</td>
<td><button id="reset" type="button" class="btn btn-info">Set interval</button></td>
</tr>
<tr>
<td><input type="checkbox" class="custom-selector"> Rank 21-100</td>
<td><input type="checkbox" class="custom-selector2"> No movement</td>
</tr>
<tr>
<td><input type="checkbox" class="custom-selector"> Not in top 100</td>
</tr>
</tbody>
</table>
这是我的脚本:
$(document).ready(function() {
$("#slider").slider({
min: 0,
max: 1000,
step: 1,
range: true,
values: [10, 90],
tooltip: 'always',
slide: function(event, ui) {
for (var i = 0; i < ui.values.length; ++i) {
$("input.sliderValue[data-index=" + i + "]").val(ui.values[i]);
}
}
});
$("input.sliderValue").change(function() {
var $this = $(this);
$("#slider").slider("values", $this.data("index"), $this.val());
});
});
我需要能够在文本框中指定值并使用滑块以及重置按钮。
看起来是我想要的,但是移动滑块不会改变文本框,反之亦然,我错过了什么?
在您 link 的 JSFiddle 中,ID 为 "slider" 的元素是空的 div,jQueryUI 使用自定义滑块标记正确填充了该元素。但是在您的代码中,该元素是一个输入。将其替换为空的 div,如文档中所示:
我尝试了代码,但是当我发出警报时这部分不起作用(我在 Firefox 上工作):
slide: function(event, ui) { alert(); // this alert is not show up!!
for (var i = 0; i < ui.values.length; ++i) {
$("input.sliderValue[data-index=" + i + "]").val(ui.values[i]);
}
}
所以我改了。试试这个。它对我有用:
$("#slider").slider({
min: 0,
max: 100,
step: 1,
range: true,
values: [10, 90],
});
$('#slider').on('slide', function (ev) {
console.log(this.value[0]);
console.log(this.value[1]);
$('.sliderValue[data-index="0"]').val(this.value[0]);
$('.sliderValue[data-index="1"]').val(this.value[1]);
});