jQuery UI 슬라이더 (프로그래밍 방식으로 설정)


81

슬라이더를 즉석에서 수정하고 싶습니다. 나는 사용하여 그렇게하려고했다.

$("#slider").slider("option", "values", [50,80]);

이 호출은 값을 설정하지만 요소는 슬라이더 위치를 업데이트하지 않습니다. 부름

$("#slider").trigger('change');

도움이되지 않습니다.

값과 슬라이더 위치를 수정하는 다른 / 더 나은 방법이 있습니까?

답변:


145

현재 범위에서 슬라이더를 변경하거나 슬라이더 범위를 변경 하려는지 여부에 따라 다릅니다.

변경하려는 현재 범위의 값인 경우 .slider () 메서드를 사용해야하지만 구문은 사용한 것과 약간 다릅니다.

$("#slider").slider('value',50);

또는 두 개의 핸들이있는 슬라이더가있는 경우 다음과 같습니다.

$("#slider").slider('values',0,50); // sets first handle (index 0) to 50
$("#slider").slider('values',1,80); // sets second handle (index 1) to 80

변경하려는 범위 인 경우 다음과 같습니다.

$("#slider").slider('option',{min: 0, max: 500});

7
지금까지 작동하지만 이벤트 핸들러를 실행하지 않습니다. 이벤트 핸들러는 슬라이딩시 일부 범위를 업데이트합니다. 슬라이드 이벤트를 수동으로 실행할 수없는 것 같습니다.
jAndy

1
ive는 .slider ( 'value', 100) 및 .slider ( 'option', 'value', 100)을 모두 시도했지만 슬라이더가 움직이지 않습니다. 내가 움직여야한다고 착각 했나? 아니면 그냥 값을 변경하고 새로 고쳐야하거나 슬라이더 이동을 실제로 확인해야합니까? 이 답변이 내가 실제로 필요한 것에 너무 가까운 것처럼 보일 때 반복 질문을하고 싶지 않았습니다.
trh178 2011 년

2
범위 슬라이더가있는 경우 이동하려는 핸들의 인덱스 정수 (시작 0)를 사용해야합니다. 따라서 첫 번째 핸들 (인덱스 0)을 50으로 이동하려면 $ ( "# slider"). slider ( 'values', 0,50); 두 번째 슬라이더 (인덱스 1)를 50으로 이동하려면 $ ( "# slider"). slider ( 'values', 1,50);
alexteg 2011 년

4
@jAndy 슬라이더 값을 설정하면 change이벤트 핸들러가 아닌 이벤트 핸들러 가 호출됩니다 slide.
Igor Mukhin 2013

6
다음과 같이 배열로 범위 슬라이더를 설정할 수도 있습니다. $ ( "# slider"). slider ( 'values', [50,80]);
tObi

15

나를 위해 이것은 UI Slider에서 슬라이드 이벤트를 완벽하게 트리거합니다.

hs=$('#height_slider').slider();
hs.slider('option', 'value',h);
hs.slider('option','slide')
       .call(hs,null,{ handle: $('.ui-slider-handle', hs), value: h });

hs.slider('option', 'value',h); 트리거 전에 값을 설정하는 것을 잊지 마십시오 . 다른 슬라이더 핸들러는 값과 동기화되지 않습니다.

여기서 주목해야 할 한 가지는 hhtml을 사용하는 경우 인덱스 / 위치 (값이 아님)입니다 select.


이 솔루션은 jQuery UI 1.8.24를 사용하여 완벽하게 작동했습니다.
Александр Фишер 2013-01-28

1
나에게도 ...이 솔루션 만 작동했습니다 .. jQuery 1.8.3 및 jQuery UI 1.9.2 @alexteg의 답변에서 값이 제대로 설정되었지만 슬라이더가 미끄러지지 않았습니다.
Gaurav Pandey

범위 슬라이더의 수정 된 스크립트는 다음과 같습니다. $('#minPrice, #maxPrice').blur(function() { var max = parseInt($('#maxPrice').val()); var min = parseInt($('#minPrice').val()); if (min > max) return false; var hs = $("#slider-range"); hs.slider("values", 0, min); hs.slider("values", 1, max); hs.slider('option', 'slide').call(hs, null, {handle: $('.ui-slider-handle', hs), values: [min, max]}); }); 여기서 #minPrice 및 #maxPrice는 두 개의 텍스트 상자입니다.
Gaurav Pandey

8

위의 답변 중 어느 것도 저에게 효과가 없었습니다. 아마도 이전 버전의 프레임 워크를 기반으로 한 것일까 요?

내가해야 할 일은 기본 컨트롤의 값을 설정 한 다음 아래와 같이 refresh 메서드를 호출하는 것뿐입니다.

$("#slider").val(50);
$("#slider").slider("refresh");

2
이것이 당신을 위해 일하고 있습니까? 문서에서 그것에 대해 아무것도 찾을 수 없으며 작동하도록 할 수 없습니다.
Znarkus

10
Error: no such method 'refresh' for slider widget instance크롬 오류 신고
Xiao Hanyu

1
JQ 2.1.0 + JQM 1.4.2에서 내 설정에서 작동합니다.
metamagikum

1
All in one line ...$("#slider").val(50).slider("refresh");
PaulR

나에게 매우 유용 해 주셔서 감사합니다 .. 나는 당신을 위해 하나의 찬성 투표를했습니다 :)
vijay

5

Mal의 대답은 나를 위해 일한 유일한 대답이었습니다 (jqueryUI가 변경되었을 수도 있음), 다음은 범위를 처리하는 변형입니다.

$( "#slider-range" ).slider('values',0,lowerValue);
$( "#slider-range" ).slider('values',1,upperValue);
$( "#slider-range" ).slider("refresh");

3

@gaurav 솔루션의 한 부분은 여러 슬라이더가있는 jQuery 2.1.3 및 JQuery UI 1.10.2에서 작동했습니다. 내 프로젝트는 이 filter.js 플러그인으로 데이터를 필터링하기 위해 4 개의 범위 슬라이더를 사용하고 있습니다 . 다른 솔루션은 슬라이더 핸들을 시작점으로 다시 재설정했지만 filter.js가 이해 한 이벤트를 발생시키지 않은 것 같습니다. 슬라이더를 반복하는 방법은 다음과 같습니다.

$("yourSliderSelection").each (function () {
    var hs = $(this); 
    var options = $(this).slider('option');

    //reset the ui
    $(this).slider( 'values', [ options.min, options.max ] ); 

    //refresh/trigger event so that filter.js can reset handling the data
    hs.slider('option', 'slide').call(
        hs, 
        null, 
        {
            handle: $('.ui-slider-handle', hs),
            values: [options.min, options.max]
        }
    );

});

hs.slider()코드는 내 시나리오에서 데이터가 아니라 UI를 재설정합니다. 이것이 다른 사람들에게 도움이되기를 바랍니다.


정답을 얻으려면 여기까지 스크롤해야했습니다. 감사합니다.
토마스 Zato - 분석 재개 모니카

2

다음과 같은 이벤트를 수동으로 트리거 할 수 있습니다.

요소에 슬라이더 동작 적용

var s = $('#slider').slider();

...

슬라이더 값 설정

s.slider('value',10);

슬라이드 이벤트를 트리거하여 UI 개체를 전달합니다.

s.trigger('slide',{ ui: $('.ui-slider-handle', s), value: 10 });

2

여러 입력에서 슬라이더 값을 변경해야하는 경우 다음을 사용하십시오.

html :

<input type="text" id="amount">
<input type="text" id="amount2">
<div id="slider-range"></div>

js :

    $( "#slider-range" ).slider({
    range: true,
    min: 0,
    max: 217,
    values: [ 0, 217 ],
    slide: function( event, ui ) {
        $( "#amount" ).val( ui.values[ 0 ] );
        $( "#amount2" ).val( ui.values[ 1 ] );
    }
    });

$("#amount").change(function() {
    $("#slider-range").slider('values',0,$(this).val());
});
$("#amount2").change(function() {
    $("#slider-range").slider('values',1,$(this).val());
});

https://jsfiddle.net/brhuman/uvx6pdc1/1/


감사합니다. 많은 시간을 절약했습니다. 다음은 Max Range 버전입니다. jsfiddle.net/jpcodes/dvumhes1
Jim Padilla

1

슬라이더와 입력 상자를 업데이트하고 싶었습니다. 나를 위해 일하고 있습니다

a.slider('value',1520);
$("#labelAID").val(1520);

a다음과 같이 객체는 어디에 있습니까 ?

 var a= $( "<div id='slider' style='width:200px;margin-left:20px;'></div>" ).insertAfter( "#labelAID" ).slider({
            min: 0,
            max: 2000,
            range: "min",
            value: 111,
            slide: function( event, ui ) {

                $("#labelAID").val(ui.value    );
            }
        });

        $( "#labelAID" ).keyup(function() {
            a.slider( "value",$( "#labelAID" ).val()  );
        });

1

제 경우에는 2 개의 핸들이있는 jquery 슬라이더가 작동하는 방식으로 만 작동합니다.

$('#Slider').slider('option',{values: [0.15, 0.6]});

-1

시작 또는 새로 고침 값 = 0 (기본값) http 요청에서 값을 가져 오는 방법

 <script>
       $(function() {
         $( "#slider-vertical" ).slider({
    animate: 5000,
    orientation: "vertical",
    range: "max",
    min: 0,
    max: 100,
    value: function( event, ui ) {
        $( "#amount" ).val( ui.value );

  //  build a URL using the value from the slider
  var geturl = "http://192.168.0.101/position";

  //  make an AJAX call to the Arduino
  $.get(geturl, function(data) {

  });
  },
    slide: function( event, ui ) {
        $( "#amount" ).val( ui.value );

  //  build a URL using the value from the slider
  var resturl = "http://192.168.0.101/set?points=" + ui.value;

  //  make an AJAX call to the Arduino
  $.get(resturl, function(data) {
  });
  }
  });

$( "#amount" ).val( $( "#slider-vertical" ).slider( "value" ) );

});
   </script>

-1

마지막으로 아래에서 작동합니다.

$ ( "# priceSlider"). slider ( 'option', {min : 5, max : 20, value : [6,19]}); $ ( "# priceSlider"). slider ( "새로 고침");


-3

다음은 작동하는 버전입니다.

var newVal = 10;
var slider = $('#slider');        
var s = $(slider);
$(slider).val(newVal);
$(slider).slider('refresh');

1
동일한 코드로 많은 답변을 복사하여 붙여 넣을 수 있습니다.
Rafael Herscovici
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.