IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

input range & input text : changement de valeur en même temps


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut input range & input text : changement de valeur en même temps
    Salut !

    Je suis actuellement en train de coder des programmes pour tout ce qui touche au crédit (Capital, taux, mensualité, etc..)

    J'essaie de créer un formulaire qui se met à jour automatiquement en changeant les données, non pas à la fin en validant par un bouton mais en LIVE..

    Sachant qu'en javascript il est possible de le faire (J'ai la solution), j'essaie de trouver un code en jquery pour actualiser directement l'input de type range et l'input de type text, quand un change l'autre doit faire de même en même temps.

    Voici un début de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var credits = 100,
        html = '<li>Apply Credits: \
    <input type="range"  min="0" max="200" value="'+credits+'" name="discount_credits" id="discount_credits" />\
    <span>' + credits + '</span>\
    </li>';
    $("body").append(html);
    $('#discount_credits').on("change mousemove", function() {
        $(this).next().html($(this).val());
    });
    Dans ce code comme vous pouvez le remarquer, j'envoie vers body un input qui donnera sa valeur à une prochaine balise span (Grâce à next() ) en même temps que je bouge le curseur de l'input range.

    Je souhaite changer le span par un input de type text pour changer la valeur du curseur range et que cela se fasse en même temps..


    J'ai essayé ça mais ça ne marche pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var credits = 100,
        html = '<li>Apply Credits: \
    <input type="range"  min="0" max="200" value="'+credits+'" name="discount_credits" id="discount_credits" />\
    <input type="text" value="'+credits+'" size="4">\
    </li>';
    $("body").append(html);
    $('#discount_credits').on("change mousemove", function() {
        $(this).next().parseFloat('#discount_credits').val();
    });
    Merci !

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $( function(){ // forme abrégée de $(document).ready(function(){
     
        var credits = 100,
            jObjInput = $( "<input/>", {
                "type" : "range",
                "min" : "0",
                "max" : "200",
                "value" : credits,
                "name" : "discount_credits",
                "mousemove" : function(){
                    $( this ).next().text( $(this).val() );
                }
            });
     
        $( "<li/>", {
            "html" : '<label>Apply Credits : </label>'
        }).append( jObjInput ).append( '<span>' + credits + '</span>' ).appendTo( "body" );
     
    });

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Sachant qu'en javascript il est possible de le faire (J'ai la solution), j'essaie de trouver un code en jquery
    J'avoue que cette phrase me rend assez perplexe...
    Déjà, parce que jQuery, c'est du JavaScript et surtout parce que si tu arrives à le faire en JavaScript natif, pourquoi vouloir le faire en jQuery si tu ne connais pas jQuery ?

  4. #4
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    mousemove

    j'imagine le CPU du gazier monter à 100% à cause d'un passage de la souris rapide sur l'input

    C'est pas un peux bourin ??

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Oui à me relire ce que j'ai écrit n'est pas très clair...
    Je voulais dire par là que sans les inputs de type range, j'arrivais à faire les calculs directement en rentrant les données MAIS, aujourd'hui les simulateurs de crédit utilisent des inputs de type RANGE, je pense que c'est pour faire plus jolie et puis pour permettre aux gens d'utiliser leur tablette sans intégrer directement les données par des champs text...

    J'ai trouvé la solution pour actualiser les données de mes inputs text et range en même temps :

    Le code si ça intéresse des gens : http://jsfiddle.net/b1gcwcak/ (Ne pas oublier de loader le jquery)


    MAIS j'ai un nouveau soucis, forcément...


    Lorsque j'utilise le slider (input range) et que les données de l'input text se mettent à jour, je souhaite lancer une fonction grâce à un EVENT, problème je ne vois pas trop lequel utiliser.

    Voici le code que j'utilise et en bleu ce qui ne va pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $('#mensualite_slider').on('input', function(){
        $('#mensualite').val($('#mensualite_slider').val());
    	$('#mensualite_slider').on("change mousemove", function(){
            calcObject.run();
            });
    });
    Pour changer les donnée instantanément j'utilise .KEYUP, mais là pour l'input de type range, je ne sais pas quel EVENT doit être utilisé !


    merci !

  6. #6
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Quel est le problème exactement ? Avec ton code : calcObject.run(); se lancera bien au changement de l'input.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Si je fais défiler le slider de la mensualité, l'input text est mis à jour mais l'input range et text du capital ne changera pas, il faut que je valide l'input text de la mensualité pour que le capital change (Comme si ça devait utiliser l'event .change() pour marcher ).
    Ca vient forcément du slider car si je change les données de la mensualité dans son input, le capital change directement (Grâce à l'event .keyup() ).

    Si je les gens ne souhaitent pas utiliser le slider il faut que j'utilise l'event .keyup() pour qu'une fonction soit appelée à chaque mouvement des touches et pour que le résultat se mette à jour.
    Pour le slider le .keyup() ne marche pas, je pense qu'il faut un autre event car il est question d'utiliser la souris..

    Ici un exemple qui illustre ce que je souhaite faire : http://e-immobilier.credit-agricole.fr/ (un peu plus bas dans la page sur la droite)


    EDIT : je mets le code que j'utilise, ça sera plus simple : http://jsfiddle.net/6w6801yh/

    Pour l'instant j'ai fait deux fonctions pour calculer le capital et la mensualité, je n'ai pas fini...

    Si on utilise les sliders, ça change les données mais ça ne met pas à jour le calcul car la fonction n'est pas appelée.
    Si on utilise les input text, ça change les données, si je change la mensualité ça changera le capital, si je change le capital ça changera la mensualité...

    Mais je souhaite utiliser les sliders pour faire cela, mais impossible, dès que je change les données avec le slider, il faut que j'utilise la touche entrée dans l'input changé...

  8. #8
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Je vais dire quelques choses que je dit trèèèèès rarement..

    Mais c'est là qu'on voie la limite d'utilisation de jQuery.. et ou ce placerai nettement mieux du AngularJS.

    Là le problème c'est que tu as de multiple composants "bindé" à la même variable, et ça AngularJS le fait très bien.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Rolala rien que les premiers exemples que j'ai testé m'ont redonnés le sourire !!

    Il va falloir que je bûche ça alors

    merci en tout cas !

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oula Golgotha, qu'est-ce que je lis ?


    Sinon, dans ce cas, je verrais bien Polymer pour ma part.

  11. #11
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    ça doit être la fatigue

    J'ai besoin de vacance...

    @Knular : Bon, sinon voilà un début, avec AngularJS : http://jsfiddle.net/1ztvhgdx/

    C'est quand même plus jolie

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    C'est pas mal du tout
    J'essaie de faire des calculs entre input text et range pour voir si mon problème est résolu
    merci !

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    J'ai fait un test avec un calcul simple :

    http://jsfiddle.net/t6thh5q2/

    Peux tu m'aider en ce qui concerne les changements de valeurs si une des trois est modifiée.
    Par exemple on change avec le slider une valeur, les autres se mettront à jour grâce à un calcul de base.

    Un calcul de base du genre :

    1 + 2 = 3

    Si je change le slider de 1 et que je remplace la valeur par 2 on verra apparaître en live :

    2 + 2 = 4

    Si je change le slider du résultat 4 par 5, un des deux "2" prendra la valeur 5 pour équilibrer.

    2 + 3 = 5


    Que je puisse avoir un modèle pour ensuite utiliser mes formules mathématiques de crédit..
    Au fait, on est obligé de mettre ça dans chaque page de son site ? : <html ng-app="todoApp">
    Et no wrap in <head>, ça veut dire quoi ? (EDIT : j'ai plus ou moins compris )

    Merci !

  14. #14
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    ça serait un truc dans ce genre là : http://jsfiddle.net/t6thh5q2/2/

    Attention.. je suis pas super calé encore sur cette techno..

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    C'est génial ! Le temps de faire des tests et je reviendrai pour donner des nouvelles d'ici peu.

    Merci beaucoup !

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Salut !

    J'ai un peu avancé en même temps que la modification de mon code jquery, je bloque sur les fonctions compense() et change()..
    J'ai pour l'instant comme but de modifier le capital ou la mensualité d'où l'ajout de deux formules, donc du coup si l'un change l'autre aussi, normalement en tout cas :

    http://jsfiddle.net/nmrj2gp6/1/

    Malheureusement ça ne veut pas s'ajuster, ça met un blanc dans l'input..La formule est peut être mal écrite ? La syntaxe etc...

    J'ai l'impression de tourner en rond avec tous ces langages, c'est dommage car il ne me manque que l'appel d'une fonction avec un slider pour finaliser mon code jquery..

    bonnes fêtes !

  17. #17
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Voilà un test basique : http://jsfiddle.net/u1c2wju3/

    Dans ta version, faut faire gaffe, puisque tu tombe dans une boucle.. la fonction change modifie $scope.mens , et de fait appel la fonction compense qui modifie le capital, qui appel la fonction change....

    Pour moi tu ne peux avoir qu'une variable d'ajustement, mais attention à ne pas tomber dans des ajustements qui s'ajuste en boucle ^^

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Salut !

    Tu as fait une grosse partie du travail, je t'en remercie grandement !!
    Je pense que ça ira.
    Par contre pour le jquery c'est en suspens, je ne mets pas le topic en [résolu] en attendant de trouver la solution, car j'ai encore envie de chercher

    Merci encore

    Bonnes fêtes !


  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Arf, me revoilà...

    J'ai un soucis au niveau de la syntax :

    Marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $scope.mens = ($scope.cptl*1 * $scope.tx_m*1 * Math.pow($scope.tx_m_plusun, $scope.mois)) / ((Math.pow($scope.tx_m_plusun, $scope.mois)) - 1 );
    Marche bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $scope.mens = $scope.cptl*1 + (Math.pow($scope.ann, $scope.tx));
    Un problème de parenthèses j'imagine...

    merci

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Salut !

    J'ai résolu mon problème, comme quoi, en persévérant on y arrive..
    Me considérant comme un amateur sans pour autant trop m'y connaître, je suis assez content..

    Voici la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // mensualité	
    
    $('#mensualite_slider').on('input', function(){
        $('#mensualite').val($('#mensualite_slider').val());
    });
    
    $('#mensualite').on('input', function(){
        $('#mensualite_slider').val($('#mensualite').val());
    });
    
    // Capital
    
    $('#capital_slider').on('input', function(){
        $('#capital').val($('#capital_slider').val());
    	ma_fonction();
    });
    
    $('#capital').on('input', function(){
        $('#capital_slider').val($('#capital').val());
    });
    J'ai appelé ma fonction.
    Le slider de la mensualité ne changeant pas alors que son input oui, j'ai placé dans ma fonction cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('#mensualite').val(parseFloat(calcObject.amountMens).toFixed(2));
    			$('#mensualite_slider').val($('#mensualite').val());
    Donc la mensualité de l'input est mise à jour et en dessous, le slider de la mensualité est à son tour mis à jour !!

    C'était tout c** !!

    Joyeux noël !!






+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Aligner texte à gauche et à droite et même temps
    Par mgoumine dans le forum Mise en forme
    Réponses: 5
    Dernier message: 18/11/2011, 12h36
  2. Réponses: 2
    Dernier message: 17/08/2011, 15h54
  3. [D5] Image et texte qui se déplacent en même temps
    Par Karim1971 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 27/11/2007, 20h37
  4. changement de valeur dans input
    Par eyolas dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/05/2007, 17h37
  5. Déclencheur javascript dans un input lors d'un changement de valeur!
    Par kalash_jako dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/04/2006, 18h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo