转换表单框中的值
Convert values in form box
我对它的工作原理有点困惑。当滑块处于活动状态时,我试图将秒值转换为输入框中的 "hh:mm:ss"。
此处div以秒为单位显示开始时间和结束时间。并在滑动时进行调整
<div class='slider-example col-xs-12 col-sm-6 col-lg-5 center-block'>
<div class="well">
<input id="ex2" type="text" class="span2" value="[{{ start_length }},{{ end_length }}]" data-slider-min="{{ start_length }}" data-slider-max="{{ end_length }}" data-slider-step="1" data-slider-value="[{{ start_length }},{{ end_length }}]" data-slider-selection="after" data-slider-tooltip="hide"/>
</div> <!-- /well -->
</div> <!-- /slider example -->
<div class = "container col-xs-12 col-sm-6 col-lg-5 center-block">
<form class="form-inline">
<div class = "container col-xs-4">
<div class="form-group">
<label for="bar">Start:</label>
<input type="text" class="form-control" id="bar">
</div>
</div>
<div class = "container col-xs-4 pull-right">
<div class="form-group">
<label for="bar1">End: </label>
<input type="text" class="form-control" id="bar1">
</div>
</div>
</form>
</div>
这是我的javascript
<script type='text/javascript' src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type='text/javascript' src="{{url_for('static', filename='js/bootstrap-slider.js')}}"></script>
<script type='text/javascript'>
function secondsTimeSpanToHMS(s) {
var h = Math.floor(s/3600);
s -= h*3600;
var m = Math.floor(s/60);
s -= m*60;
return h+":"+(m < 10 ? '0'+m : m)+":"+(s < 10 ? '0'+s : s);
}
$(document).ready(function(){
/* Example 2 */
$("#ex2").slider({});
$("#ex2").on('slide', function (ev) {
$('#bar').val(ev.value.slice(",")[0]);
$('#bar1').val(ev.value.slice(",")[1]);
document.getElementById('#bar').innerHTML = secondsTimeSpanToHMS('#bar');
document.getElementById('#bar1').innerHTML = secondsTimeSpanToHMS('#bar1');
});
});
</script>
我怀疑它是否按照您的预期进行,但这是它正在尝试进行的操作
$("#ex2").on('slide', function (ev) {
滑动范围句柄和 returns 包含每个句柄值的 2 元素数组时触发滑动事件
$('#bar').val(ev.value.slice(",")[0]);
$('#bar1').val(ev.value.slice(",")[1]);
这是尝试将 ID 为 bar 和 bar1 的元素的值设置为范围句柄值 - 如果 bar 和 bar1 是表单元素(如文本框、textarea...),这将起作用
document.getElementById('#bar').innerHTML = ...
document.getElementById('#bar1').innerHTML = ...
此 尝试 设置 ID 为 #bar 和 #bar1 的元素的 innerHTML - 但是由于您使用的是 document.getElementById
,您应该改用 bar 和 bar1在它前面加上 #(就像你为 jQuery 所做的那样)。
... = secondsTimeSpanToHMS('#bar');
... = secondsTimeSpanToHMS('#bar1');
我假设上面是尝试使用范围句柄值 运行 函数,但代码错误地将 jQuery 选择器传递给这些函数 - 函数需要一个值以秒为单位。
最后,secondsTimeSpanToHMS
取一个秒值并将其转换为 hour:minute:seconds
下面的内容可能更接近您要查找的内容
$(document).ready(function () {
/* Example 2 */
$("#ex2").slider({});
$("#ex2").on('slide', function (ev) {
$('#bar').val(secondsTimeSpanToHMS(ev.value.slice(",")[0]));
$('#bar1').val(secondsTimeSpanToHMS(ev.value.slice(",")[1]));
});
});
或者,您可以将 another 2 元素的 innerHTML 设置为 secondsTimeSpanToHMS
的输出并保留原始函数中的 .val() 行。
我对它的工作原理有点困惑。当滑块处于活动状态时,我试图将秒值转换为输入框中的 "hh:mm:ss"。
此处div以秒为单位显示开始时间和结束时间。并在滑动时进行调整
<div class='slider-example col-xs-12 col-sm-6 col-lg-5 center-block'>
<div class="well">
<input id="ex2" type="text" class="span2" value="[{{ start_length }},{{ end_length }}]" data-slider-min="{{ start_length }}" data-slider-max="{{ end_length }}" data-slider-step="1" data-slider-value="[{{ start_length }},{{ end_length }}]" data-slider-selection="after" data-slider-tooltip="hide"/>
</div> <!-- /well -->
</div> <!-- /slider example -->
<div class = "container col-xs-12 col-sm-6 col-lg-5 center-block">
<form class="form-inline">
<div class = "container col-xs-4">
<div class="form-group">
<label for="bar">Start:</label>
<input type="text" class="form-control" id="bar">
</div>
</div>
<div class = "container col-xs-4 pull-right">
<div class="form-group">
<label for="bar1">End: </label>
<input type="text" class="form-control" id="bar1">
</div>
</div>
</form>
</div>
这是我的javascript
<script type='text/javascript' src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type='text/javascript' src="{{url_for('static', filename='js/bootstrap-slider.js')}}"></script>
<script type='text/javascript'>
function secondsTimeSpanToHMS(s) {
var h = Math.floor(s/3600);
s -= h*3600;
var m = Math.floor(s/60);
s -= m*60;
return h+":"+(m < 10 ? '0'+m : m)+":"+(s < 10 ? '0'+s : s);
}
$(document).ready(function(){
/* Example 2 */
$("#ex2").slider({});
$("#ex2").on('slide', function (ev) {
$('#bar').val(ev.value.slice(",")[0]);
$('#bar1').val(ev.value.slice(",")[1]);
document.getElementById('#bar').innerHTML = secondsTimeSpanToHMS('#bar');
document.getElementById('#bar1').innerHTML = secondsTimeSpanToHMS('#bar1');
});
});
</script>
我怀疑它是否按照您的预期进行,但这是它正在尝试进行的操作
$("#ex2").on('slide', function (ev) {
滑动范围句柄和 returns 包含每个句柄值的 2 元素数组时触发滑动事件
$('#bar').val(ev.value.slice(",")[0]);
$('#bar1').val(ev.value.slice(",")[1]);
这是尝试将 ID 为 bar 和 bar1 的元素的值设置为范围句柄值 - 如果 bar 和 bar1 是表单元素(如文本框、textarea...),这将起作用
document.getElementById('#bar').innerHTML = ...
document.getElementById('#bar1').innerHTML = ...
此 尝试 设置 ID 为 #bar 和 #bar1 的元素的 innerHTML - 但是由于您使用的是 document.getElementById
,您应该改用 bar 和 bar1在它前面加上 #(就像你为 jQuery 所做的那样)。
... = secondsTimeSpanToHMS('#bar');
... = secondsTimeSpanToHMS('#bar1');
我假设上面是尝试使用范围句柄值 运行 函数,但代码错误地将 jQuery 选择器传递给这些函数 - 函数需要一个值以秒为单位。
最后,secondsTimeSpanToHMS
取一个秒值并将其转换为 hour:minute:seconds
下面的内容可能更接近您要查找的内容
$(document).ready(function () {
/* Example 2 */
$("#ex2").slider({});
$("#ex2").on('slide', function (ev) {
$('#bar').val(secondsTimeSpanToHMS(ev.value.slice(",")[0]));
$('#bar1').val(secondsTimeSpanToHMS(ev.value.slice(",")[1]));
});
});
或者,您可以将 another 2 元素的 innerHTML 设置为 secondsTimeSpanToHMS
的输出并保留原始函数中的 .val() 行。