Mehrere Slider in Abhängigkeit

the_black_hawk

Erfahrenes Mitglied
Hallo Leute,

ich möchte mehrere (5+) jQuery Slider in Abhängigkeit voneinander haben.
Pro Slider soll man eine Zutat Prozentual variieren können.

Die Summe aller Slider soll 100% ergeben.
(also entweder einer auf 100, zwei auf 50, drei auf 20,30,50 etc.)

Foglenden Ansatz habe ich bereit:

Code:
<script type="text/javascript">
  $(function() {

		
	//*** slider 01 ***//
    $("#slider_01").slider({
      range: "min",
      value: 100,
      min: 0,
	  step: 5,
      max: 100,
      slide: function(event, ui) {

		//Korrigiert Slider 2
		var newvalue  = 100 - ui.value;
		$("#slider_02").slider("value" , [newvalue] )
	  }
    });

	
	//*** slider 02 ***//
	
    $("#slider_02").slider({
      range: "min",
      value: 0,
      min: 0,
	  step: 5,
      max: 100,
      slide: function(event, ui) {
		
		//Korrigiert Slider 1
		var newvalue = 100 - ui.value;
		$("#slider_01").slider("value" , [newvalue] )
		
      }
    });

		
  });

  </script>

Mit zwei Slidern ist das also relativ einfach. Wie ich das Ganze aber mit mehreren mache ist mir nach langem Rumprobieren unklar.

Kann mir jemand helfen?
 
Schwer ist relativ, besonders kompliziert ist es nicht, wenn man damit leben kann, dass exakte Werte nur schwer möglich sind(da kommen natürlich jenachdem values mit sehr vielen Nachkommastellen heraus, welche irgendwie gerundet werden müssen).

Aber im Endeffekt ist es nur ein wenig Prozentrechnung.

Berechnnung der einzelnen inaktiven Slider:
  • Ausgangswert ?:
Code:
100-Wert des benutzen Sliders.
  • Zwischenwert %:
Code:
(Wert des inaktiven Sliders*100)/Summe der Werte aller inaktiven Slider
  • Endwert %:
Code:
(Ausgangswert*Zwischenwert)/100

Zur Fehlerkorrekur noch den Rest(Differenz zwischen Ausgangswert und Summe aller zugewiesenen Werte) einem der inaktiven Slider hinzufügen. Das wars.

Demo: http://jsfiddle.net/nFDug/

Falls noch jemand eine Lösung sucht wie er die Summe aller Slider auf maximal 100% begrenzen kann(hatte die Frage hier falsch gelesen und zuerst das umgesetzt):

http://jsfiddle.net/d3LL2/
 

Neue Beiträge

Zurück