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

JavaScript Discussion :

[AJAX] Découpage d'un champ TEXT


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Par défaut [AJAX] Découpage d'un champ TEXT
    Bonjour Chères Toutes et Chers Tous,

    Suite à une fonction qui est absolument fonctionnelle (merci E.BZZ), je recherche le moyen de rajouter un calcul, mais je bute.

    Affichage du résultat fonctionnel dans une balise input de type TEXT après appel AJAX-PHP :

    Exemple : 1000.00 [ Tamis Sir ]

    j'ai besoin de transformer cet affichage dans une autre balise de type TEXT déjà définie avec un calcul de HT. La valeur actuelle affichée est TTC et doit rester comme telle, seule la nouvelle valeur calculée HT doit être dans cette autre balise avec l'affichage de [ Tamis Sir ]. Mon calcul est ok, mais ne m'affiche :

    Exemple 1 : 900.00
    ou
    Exemple 2 : 900.001000.00 [ Tamis Sir ]

    Comment donc pourrais-je découper correctement mon code pour que j'obtienne au final dans ma seconde balise :

    900.00 [ Tamis Sir ]

    Voici mon code actuel :

    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
    function traitementReponse(http_request,id_ecrire) { 
    	var affich=""; 
    	if (http_request.readyState == 4) { 
    		if (http_request.status == 200) { 
    			var affich_list=http_request.responseText; 
    			obj = document.getElementById(id_ecrire); 
    			obj.innerHTML = affich_list; 
    			l_input = document.getElementById("' . $code_produit_visible_moteur . '"); 
    			le_select = document.getElementById("moteur"); 
    			l_input.value = le_select.options[le_select.selectedIndex].text; 
    			tableau_envoi_moteur = document.getElementById("' . $code_produit_visible_moteur . '").value.split(" [")[0];
     
    			var calcul_TVA_moteur = tableau_envoi_moteur.replace("\'","") / ((parseFloat("' . $taux_tva . '") + parseInt(100)) / parseInt(100)); 
    			document.getElementById("' . $code_produit_id_moteur . '").value = calcul_TVA_moteur.toFixed(2) + l_input.value;
     
    		} else { 
    			alert("Un probleme est survenu avec la requete."); 
    		} 
    	} 
    }
    Merci de vos commentaires

  2. #2
    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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Selon moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau_envoi_moteur.replace("\'","")
    Est plutôt maladroit... et surtout ne te retourne pas un number, ce qui ne doit pas être trop grave car la division suivante est censée y remédier, malgré tout, je mettrais à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseFloat(tableau_envoi_moteur, 10)
    Ce qui m'amène à une erreur plus gênante à mes yeux : que te renvoies parseInt(100) ?
    parseInt prend en effet 2 arguments, une valeur à transformer et la base.
    Par défaut, la base est 0, c'est à dire détection automatique...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Par défaut
    Hello Bovino,

    J'ai effectué la modification, que je comprends.

    que te renvoies parseInt(100) ?
    En fait, je ne sais pas ! Etant novice, j'ai lu que pour additionner un nombre, on devait l'identifier avec un + et ParseInt ou ParseFloat. C'est ma seule explication.

    Mais effectivement, j'obtiens toujours, avec le code tel quel, le résultat de :

    900.001000.00 [ Tamis Sir ] (exemple, bien sûr)

    alors que je souhaite le découpage correct comme tel,

    900.00 [ Tamis Sir ]

    tiré d'une valeur de

    1000.00 [ Tamis Sir ]

    Merci de tes lumières

  4. #4
    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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Le problème, c'est que + a plusieurs utilisations...

    - Additionner des nombres,
    - Concaténer des chaines.

    Dans ton cas et au vu du résultat renvoyé, il semble que tu fasses un truc du genre :
    nombre1 + nombre2 + chaine ;

    dans ce cas, javascript va considérer tous les éléments comme des chaines et les concaténer.
    Il faut d'abord additionner les nombres, puis les concaténer à une chaine.
    Par exemple
    nombreTotal = nombre1 + nombre2
    additionne puis
    nombreTotal + chaine concatène...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Par défaut
    Salut Bovino ,

    MERCI MERCI MERCI

    En effet, étant novice, tes informations m'ont permises de faire ceci donc, mais serait-il possible de facilité ce code ?!?! :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function maj_input(id_input, id_select) {
    	l_input = document.getElementById("' . $code_produit_visible_moteur . '");
    	le_select = document.getElementById("moteur");
    	l_input.value = le_select.options[le_select.selectedIndex].text;
    	tableau_envoi_moteur = document.getElementById("' . $code_produit_visible_moteur . '").value.split(" [")[0]; 
    	table = l_input.value.split(" ");
    	var calcul_TVA_moteur = parseFloat(tableau_envoi_moteur, 2) / ((parseFloat("' . $taux_tva . '") + parseInt(100)) / parseInt(100)); 
    	var TVAA = calcul_TVA_moteur.toFixed(2); 
    	if ( table[4] ) { 
    		document.getElementById("' . $code_produit_id_moteur . '").value = TVAA + " " + table[1] + " " + table[2] + " " + table[3] + " " + table[4]; 
    	} else { 
    		document.getElementById("' . $code_produit_id_moteur . '").value = TVAA + " " + table[1] + " " + table[2] + " " + table[3]; 
    	} 
    }
    J'obtiens parfaitement mon découpage car les données peuvent être de ce type :

    1000.00 [ Tamis Sir ] ou
    1000.00 [ Tamis ]

    Donc mon découpage prend en compte les valeurs si il contient 2 ou 3 textes après [



    Bon dimanche et à bientôt

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Par défaut
    Chers Toutes et Tous,

    J'ai en plus rajouté une variable permettant d'envoyer le formulaire avec mes données sans les ' des milliers, car ceci me donnait une erreur :

    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
    function maj_input(id_input, id_select) {
    	l_input = document.getElementById("' . $code_produit_visible_moteur . '");
    	le_select = document.getElementById("moteur");
    	l_input.value = le_select.options[le_select.selectedIndex].text;
    	tableau_envoi_moteur = document.getElementById("' . $code_produit_visible_moteur . '").value.split(" [")[0]; 
    	table = l_input.value.replace("\'","").split(" ");
    	var calcul_TVA_moteur = parseFloat(tableau_envoi_moteur.replace("\'","")) / ((parseFloat("' . $taux_tva . '") + parseInt(100)) / parseInt(100)); 
    	var TVAA = calcul_TVA_moteur.toFixed(2); 
    	if ( !isNaN(table[0]) ) {
    		if ( table[4] ) { 
    			document.getElementById("' . $code_produit_id_moteur . '").value = TVAA + " " + table[1] + " " + table[2] + " " + table[3] + " " + table[4]; 
    		} else { 
    			document.getElementById("' . $code_produit_id_moteur . '").value = TVAA + " " + table[1] + " " + table[2] + " " + table[3]; 
    		} 
    	} else {
    	document.getElementById("' . $code_produit_id_moteur . '").value = 0; 
    	}
    }
    Avec ceci, la donnée de

    1'000.00 [ Tamis Sir] envoie
    1000.00 [ Tamis Sir ]

    ou

    1'000.00 [ Tamis ] envoie
    1000.00 [ Tamis ]

    Il fallait le dire, merci encore à Bovino

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] [PHP-JS] Evénement ONBLUR sur champ texte
    Par Sytchev3 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/09/2007, 15h31
  2. [AJAX] liste lié a un champ text
    Par CROSS dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/07/2007, 19h38
  3. [AJAX] Lier une liste déroulant à un champ texte
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 13/04/2007, 14h50
  4. [AJAX] Autocomplétion d'un champ texte
    Par jarod71 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/03/2007, 12h34
  5. Réponses: 1
    Dernier message: 20/03/2007, 09h24

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