2010-10-15 9 views
5

Por el momento estoy usando el control deslizante de jQuery UI para permitir que las personas seleccionen una cantidad de donación. El problema es que el control deslizante es demasiado pequeño y necesita compensar el mínimo de $ 1 y el máximo de $ 10,000. La solución propuesta es usar un pequeño incremento, tal vez $ 1 o $ 2, para valores entre $ 1 - $ 1000, y luego desde allí, aumentar el incremento exponencialmente hasta $ 10,000, pero no puedo encontrar un complemento capaz de esto.Necesita control deslizante que puede incrementarse exponencialmente (sin usar el rango)

Así que en este momento tengo el incremento de $ 1 y, como probablemente haya adivinado, es casi posible seleccionar una cantidad de dinero específica.

Cualquier ayuda sería grande!

+2

¿Hay alguna ventaja de tener un control deslizante como este frente a un cuadro de texto donde se puede escribir la cantidad? Como usuario, no me tomaría el tiempo para jugar con un control deslizante si pudiera escribirlo. –

+0

posible duplicación de [Control deslizante logarítmico] (http://stackoverflow.com/questions/846221/logarithmic-slider) –

+0

Usted también podría estar interesado en: http://forum.jquery.com/topic/non-linear-logarithmic-or-exponential-scale-for-slider –

Respuesta

1

Un control deslizante apenas me parece la herramienta adecuada para ese trabajo.

Pero si insistes, puedes aumentar el tamaño del paso deslizante (por ejemplo, 10 posiciones posibles) y para cada paso buscar el monto al que corresponde.

Ejemplo:

  • 1 -> 1 $
  • 2 -> 2 $
  • 3 -> 5 $
  • 4 -> 10 $
  • 5 -> 50 $
  • 6 -> 200 $
  • 7 -> $ 1k
  • 8 -> 5k $
  • 9 -> 10 k $
  • 10 -> 20 k $
+0

Eso suena como el mapeo correcto para una solicitud de donación. (Y no es exactamente exponencial, por lo que querrá usar una tabla de búsqueda de algún tipo.) –

1

Para añadir a @brunodecarvalho 's respuesta, hacer un JSlider con marcas de graduación, pero no hay etiquetas, la pareja con un JLabel o una JTextField para que cuando el valor del control deslizante se cambia, el valor asignado apropiadamente aparece en JLabel o JTextField.

Si está usando JTextField, confíe en el valor JTextField como el monto real de la donación del usuario (para que pueda editarlo y elija un valor que no esté en el control deslizante) y actualice el control deslizante para cerrar marca cuando el JTextField cambia.

+1

Ok, entonces di esta respuesta en nombres de clase Java, por la etiqueta java, pero ahora estoy convencido de que la etiqueta java es incorrecta. No borro la respuesta, porque cualquier persona con un conocimiento informático suficientemente general debería ser capaz de traducir los nombres de las clases al lenguaje/kit de herramientas que elija. –

0

Como se ha dicho anteriormente, tendrá que asignar las posiciones del control deslizante a cantidades de dinero. Aquí es un buen mapeo casi logarítmica que tiene la propiedad agradable de dar valores redondos:

var slider_values = []; 
var mantissas = [1, 1.2, 1.4, 1.6, 1.8, 2, 2.5, 3, 3.5, 4, 4.5, 5, 6, 7, 8, 9]; 
for (var base = 1; base < 10000; base *= 10) { 
    for (var i = 0; i < mantissas.length; i++) 
     slider_values.push(mantissas[i] * base); 
} 
slider_values.push(10000); 

Esto mapea el rango de números enteros [0..64] a la gama 1 - 10000.

Cuestiones relacionadas