2016-02-19 56 views
1

滑块UI从数组中选取值(它也可以用'加号'和'减号'按钮进行操作) - 但它不更新输入字段中的数字,直到鼠标点击'这不是非常用户友好的。更新数组中的滑块UI值

Here is a link to Fiddle

$(function() { 
 
    var sizes = [ "0 years", "1 year", "2 years", "3 years", "4 years", "5 years", "6 years", "7 years" ]; 
 
    $("#slider-range-max3").slider({ 
 
    range: "max", 
 
    min: 0, 
 
    max: sizes.length - 1, 
 
    step: 1, 
 
    create: function(event, ui) { 
 
     $("#sup").val(sizes[0]); 
 
    }, 
 
    change: function (event, ui) { 
 
     $("#sup").val(sizes[ui.value]); 
 
     $(".sup").text(sizes[ui.value]); 
 
     var value = $(this).val(), 
 
     button = $("#sup").val(sizes[ui.value]); 
 
     setTimeout(function() { /* update text after jQM refreshes slider */ 
 
     button.text(custom[value]); 
 
    }, 0); 
 
     
 
    } 
 
    }); 
 

 
    $("#plus3").click(function() { 
 
    var value = $("#slider-range-max3").slider("value"); 
 
    var step = $("#slider-range-max3").slider("option", "step"); 
 

 
    $("#slider-range-max3").slider("value", value + step); 
 
    }); 
 

 
    $("#minus3").click(function() { 
 
    var value = $("#slider-range-max3").slider("value") 
 
    var step = $("#slider-range-max3").slider("option", "step"); 
 

 
    $("#slider-range-max3").slider("value", value - step); 
 
    }); 
 
});
<div id="quote-input" class="slider-input"> 
 
<div id="minus3" class="minus"><span>-</span></div> 
 
<div id="plus3" class="plus">+</div> 
 
\t \t \t  <input type="text" id="sup" class="slider-value"> 
 

 
      
 
<div id="slider-range-max3" class="slider"> 
 
<span class="ui-slider-handle"></span> 
 
</div>

我已经找到了一个类似的解决方案上Fiddle和尝试应用到我的情况,但是没有成功。

所添加的代码不工作:

var value = $(this).val(), 
    button = $("#sup").val(sizes[ui.value]); 
    setTimeout(function() { /* update text after jQM refreshes slider */ 
    button.text(custom[value]); 
}, 0); 

我不知道如何得到它的工作。

+0

*直到鼠标是“未点击”的slide事件*这是什么意思? –

+0

他意味着当你释放鼠标,然后值被更新。当然,这是一个点击事件,鼠标被释放后,它会执行代码。 – Jorrex

+0

这可能不是解释它的最好方式,但值只有在鼠标按钮释放后才会更新。我试图让滑动条的值更新,而它的句柄被拖动。 –

回答

0

要更新的值,而滑动,你需要使用的,而不是change事件

$("#slider-range-max3").slider({ 
    range: "max", 
    min: 0, 
    max: sizes.length - 1, 
    step: 1, 
    create: function(event, ui) { 
     $("#sup").val(sizes[0]); 
    }, 
    slide: function (event, ui) { 
     $("#sup").val(sizes[ui.value]); 
     $(".sup").text(sizes[ui.value]); 
     var value = $(this).val(), 
     button = $("#sup").val(sizes[ui.value]); 
     setTimeout(function() { /* update text after jQM refreshes slider */ 
     button.text(custom[value]); 
    }, 0); 
+0

谢谢,但这不会解决问题,因为按钮工作正常。问题是滑块中的某个用户改变了函数:change:function(event,ui){(“#sup”)。val(sizes [ui.value]); $(“。sup”)。text(sizes [ui.value]); var value = $(this).val(), button = $(“#sup”)。val(sizes [ui.value]); setTimeout(function(){/ *更新jQM刷新滑块后的文本*/ button.text(custom [value]); },0); –

+0

编辑我的答案,你需要什么 – Jorrex

+0

工程像魅力!谢谢你的修复 –