slider multiple jquery ui

slider multiple jquery ui - HTML/CSS - Programmation

Marsh Posté le 10-02-2014 à 14:25:52    

Bonjour,
 
étant débutant en javascript, je souhaite avoir votre aide sur un point particulier.
 
J'ai 3 variables, appelons les A, B et C
 
Cest trois variable sont interdépendantes, soit :
 
A x constante = B
 
A x B = C
 
A est compris entre 0 et 1 000
 
B entre 0 et 2
 
C entre 0 et 2000.
 
Mon objectif est de créer 3 slide type http://jqueryui.com/slider/#rangemin
 
Si je modifie la valeur d'un des slide, les deux autres valeurs sont automatiquement modifiées.
 
Exemple:
 
Par défaut, A = 500, B = 1 et C = 500
 
Si je selectionne 700 en A,
 
alors B = 1,4 et C = 980
 
Pouvez-vous m'aider à construire ces 3 slides svp ?
 
Merci d'avance!

Reply

Marsh Posté le 10-02-2014 à 14:25:52   

Reply

Marsh Posté le 10-02-2014 à 17:10:41    

Bonjour bibee,
 
J'aimerai égalment connaitre la réponse.

Reply

Marsh Posté le 13-02-2014 à 11:42:58    

up

Reply

Marsh Posté le 13-02-2014 à 15:53:04    

Bonjour,
 
De mémoire dans l'objet slide tu as une callback appelé lors d'une modification.
Du coup, si Slide A bouge et vaut a, dans la callback tu dis Slide B = b = a * c, et slide C = c = a * b.
 


---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
Reply

Marsh Posté le 13-02-2014 à 16:53:54    

Je t'ai fait un truc vite fait, pas fait le troisième slide, mais tu devrais comprendre le principe
 
Ya surement moyen de faire plus propre par contre :whistle:  
 
http://jsfiddle.net/afSE5/

Reply

Marsh Posté le 14-02-2014 à 01:54:49    

Régler A et B en fonction de C c'est le plus compliqué : http://jsfiddle.net/5Wwu3/
 
En gros, il faut pouvoir deviner A et B en utilisant seulement C, mais comme la relation n'est pas linéaire il faudrait utiliser autre chose que des divisions et des multiplications.
Je suis programmeur et non mathématicien donc j'ai essayé "d'approcher la valeur de C" en faisant varier A et B à l'aide d'une boucle itérative.
 
Edit :
- Alors, j'ai remplacé l'approximation approximative par une formule qui tient sur une ligne et ça donne : http://jsfiddle.net/5Wwu3/6/
- Sinon sur cette version, je suis parti en live et j'ai commencé à construire un délire mathématique basé sur des règles un peu comme du prolog : http://jsfiddle.net/5Wwu3/5/


Message édité par czh le 19-02-2014 à 01:30:07
Reply

Marsh Posté le 16-02-2014 à 21:52:19    

il suffit simplement de poser les équations d'une part :  
 
nous avons A,B,C et constante
on sait que  
B = A*constante
C = A*B
 
Donc  
C = A*A*constante*B
 
On peut facilement deviner A à partir de C et B
C = A^2*constante*B
A^2 = C / (constante*B)
A = Math.sqrt(C / (constante*B));
 
Maintenant à vous de poser le code qui va bien, sachant que lorsqu'on mets les 2 autres champs à jour on ne touche pas à celui qui vient de bouger


---------------
Blablaté par Harko
Reply

Marsh Posté le 17-02-2014 à 11:25:42    

merci à tous pour vos réponses,  
je vais essayer de mettre en place toutes ces infos!

Reply

Marsh Posté le 18-03-2014 à 09:56:53    

Bonjour à tous,
 
j'ai essayé de travailler sur vos différentes solutions mais ça ne fonctionne pas.
J'avais tenter de simplifier les choses dans un premier temps, voici le problème en détail.
Il s'agit toujours de lier 3 sliders entre eux.
 
Voici les éléments connus :
 
C = B * A * 50
B = 1 + 0,5 * log (A / 500)
 
Le résultat se trouve ici :
http://jsfiddle.net/YaSN8/9/
 
Comme vous le constatez, si je bouge A alors B et C fonctionnent.
Par contre, B est immobile et C fait varier A correctement mais a une relation curieuse avec B (la variation du curseur se fait en priorité sur A, puis sur B quand A est au max).
 
Dans la fonction de B, j'ai tenté d'exprimer A en fonction de B.
Si B = 1 + 0,5*log(A/500),
alors :
A = 500*exp((B-1)*(ln10/0,5))
 
je pense que c'est cette formule que je traduis mal en code.
 
Pouvez-vous me venir en aide svp ?
 
 
 

Reply

Marsh Posté le 18-03-2014 à 19:33:10    

Dans la console javascript du navigateur, on peut voir que "Uncaught TypeError: Object #<Object> has no method 'ln' ", autrement dit ln n'existe pas sur l'objet Math.
 
Pour ouvrir la console sous Chrome (sous Windows) : ctrl+maj+j.
Pour ouvrir la console sous Firefox : F12, ou ctrl+maj+k.
Sinon il existe sur tous les navigateurs récents une option dans les menus qui porte un nom plus ou moins évocateur comme Outils de développement/Développement web/etc.
 
Documentation sur l'objet Math : http://www.w3schools.com/jsref/jsref_obj_math.asp


Message édité par czh le 18-03-2014 à 19:34:07
Reply

Marsh Posté le 18-03-2014 à 19:33:10   

Reply

Marsh Posté le 19-03-2014 à 09:23:10    

merci czh,
j'ai remplacé le ln 10 / 0,5 par une valeur approchante.
Il y a toujours un problème. Seul, le slider A fonctionne correctement (les 2 autres sliders s'ajustent en même temps).
Sur B et C par contre, un seul autre slider s'ajuste, je n'arrive pas à comprendre.
 
http://jsfiddle.net/YaSN8/11/
 
merci pour votre aide!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed