jquery UI 单击滑块更新滑块最大值

jquery UI Slider on click update the slider max value

我有一个输入框,然后是一个滑块。它被设置为如果用户在输入框中输入一个数字,它将改变滑块句柄的值。如果用户拖动手柄,则它会更新输入框的值。

我还需要这样做,如果用户点击一个 div,它以公斤为单位,另一个 div 将数字更改为磅。我现在有了它,以便输入框中的数字和句柄更改位置到新数字。

我的问题是滑块的最大值。如果选择了 div #lb,它应该是最大值:100,如果选择了 #kg,它应该是 45。现在它不会更新,所以值总是 100。

即 - 当我有 #lb 或 #kg 的点击功能时,滑块上的 sliderVal 没有更新。

代码:

var kg = 0.45359237
var sliderVal = 100

$("#lb").click(function() {
    $("#inputBox").val(  Math.round( $("#inputBox").val()/kg) )
    var sliderVal = 100      
    $("#mySlider").slider("value" , $('#inputBox').val());
});
$("#kg").click(function() {
    $("#inputBox").val( Math.round( $("#payload").val()*kg) )
    var sliderVal = 45
    $("#mySlider").slider("value" , $('#inputBox').val()) 
});


$( "#payloadSlider" ).slider({
    range: "min",
    min: 0,
    max: sliderVal,
    slide: function( event, ui ) {
    $( "#inputBox" ).val( ui.value );
    $(ui.value).val($('#inputBox').val());
    }
});

$("#inputBox").keyup(function() {
    $("#mySlider").slider("value" , $(this).val())
});   

我已尝试过类似以下示例的操作,但它仍然没有更新。

$("#mySlider").slider("value" , $('#inputBox').val()).refresh();

var lbVal = Math.round( $("#payload").val()/kg)
$("#payload").val( lbVal )
$("#mySlider").prop({max: sliderVal,value: lbVal}).slider("refresh"); 

谢谢!!

.slider("refresh") 不工作,但我知道发生了什么。

我包括:

$("#mySlider").slider("option", "max" , sliderVal );

就在前面:

$("#mySlider").slider("value" , $('#inputBox').val());

我相信有更好的写法,但它确实有效。请注意,最大值必须在滑块值之前声明。我忘记的另一件事是 "option" 部分,它很重要。

完整代码:

var kg = 0.45359237
var sliderVal = 100

$("#lb").click(function() {
    $("#inputBox").val(  Math.round( $("#inputBox").val()/kg) )
    var sliderVal = 100   
    $("#mySlider").slider("option", "max" , sliderVal );   
    $("#mySlider").slider("value" , $('#inputBox').val());
});
$("#kg").click(function() {
    $("#inputBox").val( Math.round( $("#payload").val()*kg) )
    var sliderVal = 45
    $("#mySlider").slider("option", "max" , sliderVal );
    $("#mySlider").slider("value" , $('#inputBox').val()) 
});


$( "#payloadSlider" ).slider({
    range: "min",
    min: 0,
    max: sliderVal,
    slide: function( event, ui ) {
    $( "#inputBox" ).val( ui.value );
    $(ui.value).val($('#inputBox').val());
    }
});

$("#inputBox").keyup(function() {
    $("#mySlider").slider("value" , $(this).val())
});