2009-05-13 18 views
16

que estoy tratando de conseguir el control deslizante jQuery para establecer los valores han de deslizarse a frente a cada número entre las cantidades mínimas y máximas &.jQuery UI valores fijos deslizantes

estoy queriendo "0, 25, 50, 100, 250, 500", como las únicas cantidades gente puede deslizarse también, pero no puede llegar a cómo se hace. Ponerlos en la parte de "Valores" no parece hacer nada.

<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> 

Respuesta

40

El inicializador de valores sirve para proporcionar las posiciones iniciales de los controles deslizantes de varios pulgares.

I establece una matriz de los valores posibles, cambiar el control deslizante para trazar sobre el rango de esa matriz, y luego cambiar su presentación poco para leer desde el elemento de la matriz apropiada.

control deslizante de intervalo múltiple-thumb versión

$(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

control deslizante de rangos: un solo pulgar versión


$(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]); 
}) 

;

html mínimo:

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

enter image description here

+0

+1 Esto funciona maravillosamente! Excelente si quieres que los valores tengan una cantidad visual fija de ancho entre ellos. Ahora solo necesito extender el CJuiSliderInput para implementar este comportamiento en Yii;) –

+2

@great_llama, su versión genera 2 pulgares en un control deslizante, por lo que puede arrastrar ambos. Lo he modificado en caso de que solo necesite un pulgar para arrastrarlo. http://jsfiddle.net/8B4wY/2/. Lo agregaré a tu respuesta en caso de que alguien necesite exactamente la versión individual, si crees que esto no pertenece aquí, quítalo. – rmagnum2002

+0

En el segundo ejemplo: 'range slider: single-thumb version' el valor' min' debe ser '0'. – kolobok