2013-07-08 2 views
1
<div id='slider'></div> 
<div id='start'><input value="1"></div> 
<div id='stop'><input value="99"></div> 

$.ui.slider.prototype._slide = function (event, index, newVal) { 
       var otherVal, 
       newValues, 
       allowed; 

       if (this.options.values && this.options.values.length) { 
       otherVal = this.values(index ? 0 : 1); 
       if (newVal !== this.values(index)) { 
        newValues = this.values(); 
        newValues[ index ] = newVal; 
        // A slide can be canceled by returning false from the slide callback 
        allowed = this._trigger("slide", event, { 
        handle: this.handles[ index ], 
        value: newVal, 
        values: newValues 
        }); 
        otherVal = this.values(index ? 0 : 1); 
        if (allowed !== false) { 
        this.values(index, newVal, true); 
        } 
       } 
       } else { 
       if (newVal !== this.value()) { 
        // A slide can be canceled by returning false from the slide callback 
        allowed = this._trigger("slide", event, { 
        handle: this.handles[ index ], 
        value: newVal 
        }); 
        if (allowed !== false) { 
        this.value(newVal); 
        } 
       } 
       } 
      } 

$('#slider').slider({ 
    min: '0', 
    max: '99', 
    range: true, 
    values: [0,99], 
    slide: function(event, ui) { 
     if(ui.values[0] >= ui.values[1]) { 
              if(ui.handle == $("#slider a")[0]) { 
              $("#slider").slider("values", 1, ui.value+1); 
              ui.values[0] = ui.value; 
              ui.values[1] = ui.value+1; 
              } else { 
              $("#slider").slider("values", 0, ui.value-1); 
              ui.values[0] = ui.value-1; 
              ui.values[1] = ui.value; 
              } 
             } 

     var minutes0 = Math.floor(ui.values[0]); 


     var minutes1 = Math.floor(ui.values[1]); 


     $('#start input').val(minutes0); 
     $('#stop input').val(minutes1); 
    } 
}); 

바이올린 : 내가 핸들러를 드래그하면당신에게 슬라이더가 입력 상자에 변경 사항을 반영 할 방법

http://jsfiddle.net/Nk8ap/18/는 지금, 변경이 텍스트 상자에 반영됩니다.

하지만 수동으로 숫자를 입력 할 때 해당 변경 사항이 처리기에 반영되도록하려면 어떻게해야합니까?

답변

3

당신은 입력에 대한 이벤트 처리기를 추가하고, 슬라이더 값을 변경 :

$('#start input, #stop input').on('change', function() { 
    var val = [$('#start input').val(), $('#stop input').val()]; 
    $("#slider").slider('values', val); 
}); 

FIDDLE

+0

이 봐,이 일! 고맙습니다. 그러나 일단 입력되면 값을 변경하는 방법은 무엇입니까? 지금 당장 입력을 누르거나 마우스를 사용하여 텍스트 상자 바깥을 클릭해야 변경 사항을 볼 수 있습니까? 사전에 감사드립니다 – user2539797

+1

물론 그냥 키 이벤트 중 하나를 사용하십시오. 여기에는 키패드처럼 [*** FIDDLE ***] (http://jsfiddle.net/Nk8ap/26/) ....... – adeneo

+0

최고! * THUMBS UP * – user2539797

관련 문제