2009-05-13 25 views
16

jQuery kaydırıcısını, minimum & max miktarları arasındaki her bir değerin karşısına ayarlanacak değerlere sahip olacak şekilde ayarlamaya çalışıyorum.jQuery UI kaydırıcı değerleri

"0, 25, 50, 100, 250, 500" ifadesini kullanmak istediğim kişi sayısı kadar kaydırılabilir, ancak nasıl yapıldığını bilemez. Onları "Değerler" bölümüne koymak hiç bir şey yapmıyor gibi görünüyor.

<script type="text/javascript"> 
$(function() { 
    $("#slider-range").slider({ 
     range: true, 
     min: 0, 
     max: 500, 
     values: [100, 250], 
     slide: function(event, ui) { 
      $("#amount").val('Miles: ' + ui.values[0] + ' - ' + ui.values[1]); 
     } 
    }); 
    $("#amount").val('Miles: ' + $("#slider-range").slider("values", 0) + ' - ' + $("#slider-range").slider("values", 1)); 
}); 
</script> 

cevap

40

Değer başlatıcısı, çoklu başparmak kaydırıcılarının başlangıç ​​konumlarını sağlamak içindir.

Olası değerlerin bir dizisini sağlarım, bu dizinin aralığı boyunca eşlemek için kaydırıcıyı değiştiririm ve sonra sunu dizisini uygun dizi öğesinden okumak üzere değiştiririm.

aralık kaydırma: birden çok parmak versiyonu

$(function() { 
    var valMap = [0, 25, 50, 100, 250, 500]; 
    $("#slider-range").slider({ 
     min: 0, 
     max: valMap.length - 1, 
     values: [0, 1], 
     slide: function(event, ui) {       
      $("#amount").val('Miles: ' + valMap[ui.values[0]] + ' - ' + valMap[ui.values[1]]);     
     }  
    }); 
    $("#amount").val('Miles: ' + valMap[$("#slider-range").slider("values", 0)] + ' - ' + valMap[$("#slider-range").slider("values", 1)]); 
}); 

enter image description here

aralık kaydırma: tek parmak versiyonu


$(function() { 
    var valMap = [0, 40, 50, 63, 90, 110, 125, 140, 160, 225, 250]; 
    $("#slider-range").slider({ 
     min: 1, 
     max: valMap.length - 1, 
     value: 0, 
     slide: function(event, ui) {       
      $("#amount").val(valMap[ui.value]);     
     }  
    }); 
    //$("#amount").val(valMap[ui.value]); 
}) 

;

asgari html:

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

enter image description here

+0

+1 Bu hayret verici çalışıyor! Değerlerin, aralarında sabit bir görsel genişliğe sahip olmasını istiyorsanız, harika. Şimdi yalnızca bu davranışı Yii;) –

+2

@great_llama içinde uygulamak için CJuiSliderInput'ı genişletmem gerekiyor, sürümünüz bir kaydırıcıda 2 başparmak üretiyor, böylece her ikisini de sürükleyebilirsiniz. Sürüklemek için sadece bir başparmak ihtiyacınız varsa bunu değiştirdim. http://jsfiddle.net/8B4wY/2/. Birinin tam olarak tek bir versiyona ihtiyacı olması durumunda cevabınıza ekleyeceğim, bunun buraya ait olmadığını düşünüyorsanız lütfen onu kaldırın. – rmagnum2002

+0

İkinci örnekte: '' range slider: tek-başparmak versiyonu' 'min' değeri' 0' olmalıdır. – kolobok