Probleme dans mon script de multi insertion en Js , Qjery [Résolu]

Signaler
Messages postés
31
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
20 novembre 2020
-
Messages postés
31
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
20 novembre 2020
-
Bonsoir, j'ai un formulaire qui permet d'insérer plusieurs article en même temps.
Dans mon formulaire l'utilisateur à 2 solutions soit de choisir un article dans la liste déroulante.
Soit de d'écrire manuellement le nom ainsi que les caractéristiques de l'article.

Pour cela quand l'onglet select à sa valeur de default "Sélectionnez un article" le 2eme input qui permet d'écrire l'article manuellement est disponible mais si le champ select est utiliser l'input deviens grisé (disabled).

Mon problème est que quand j'utilise pas le select, mon code utilise quand même la valeur celui ci.

Image d'illustration :

Cas ou je définie un article manuellement :



Comme vous pouvez le voir la j'ai écrit "Chaise" mais c'est "Pas de produit qui apparait"
Dans mon code js j'ai mit des conditions mais cela ne change rien ( et pas d'erreur sont déclarer dans la console)

Code js / app-add_facture.js :

$(document).ready(function(){
        
        var id = 1; 
        /*Assigning id and class for tr and td tags for separation.*/
        $("#button_send").click(function(){

             if(document.getElementById("article").value == "Pas de produit"){
                  var articlee = $("#newarticle").val();
             }else{
                  var articlee = $("#article").val();
            }
            var newid = id++; 
            $("#table").append(`<tr valign="top" id="${newid}">
            <td width="100px" class="numeros${newid}">${$("#numeros").val()}</td>
            <td width="100px" class="article${newid} line">${articlee}</td>
            <td width="100px" class="referencearticle${newid} line">${$("#referencearticle").val()}</td>
            <td width="100px" class="cout${newid}">${$("#cout").val()}</td>
            <td width="100px" class="quantite${newid}">${$("#quantite").val()}</td>
            <td width="100px" class="tva${newid}">${$("#tva").val()} %</td>
            <td width="100px" class="remise${newid}">${$("#remise").val()} %</td>
            <td width="100px"><a href="javascript:void(0);" class="remCF"><i class='bx bx-x red'></i></a></td></tr>`);
        });


Code HTML :

<div class="invoice-item-filed row pt-1 px-1">
                                                                <div class="col-12 col-md-4 form-group">
                                                                    <select id="article" class="form-control invoice-item-select">
                                                                        <option value="Pas d'article">Selectionner un article</option>
                                                                        <?php foreach($article as $articlee): ?>
                                                                        <option value="<?= $articlee['article'] ?>"><?= $articlee['article'] ?></option>
                                                                        <?php endforeach; ?>
                                                                    </select>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <input name="cout" id="cout" type="number" class="form-control" placeholder="0" onkeyup="myFunction()">
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <input name="quantite" id="quantite" type="number" class="form-control" placeholder="0" onkeyup="myFunction()">
                                                                </div>
                                                                <div class="col-md-2 col-12 form-group">
                                                                          <strong id="demo" class="text-primary align-middle">00.00 €</strong>
                                                                </div>
                                                                <div class="col-md-4 col-12 form-group">
                                                                    <label for="article">Article :</label>
                                                                    <input name="article" id="newarticle" type="text" class="form-control invoice-item-desc" placeholder="Nom de l'article">
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label for="ref">REF :</label>
                                                                    <input name="referencearticle" id="referencearticle" type="text" class="form-control invoice-item-desc" placeholder="Réference"required>
                                                                </div>
                                                            </div>


PS = J'ai tester de mettre le if avant le script mais ca n'a rien changer non plus.

2 réponses

Messages postés
30235
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 novembre 2020
2 993
On va commencer par réécrire ton IF complètement en jquery
 if($("#article").val() == "Pas de produit"){
      var articlee = $("#newarticle").val();
}else{
    var articlee = $("#article").val();
  }

et puis, histoire de rendre le code un peu plus présentable, on va le transformer en écriture ternaire ( c'est juste une autre façon de réécrire ton if )
var articlee = $("#article").val() == "Pas de produit" ? $("#newarticle").val() : $("#article").val();


ensuite on va juste ajouter en dessous un "alert" pour voir quelle valeur il affiche
alert("articlee  : " + articlee );


PS: Pense bien à vider le cache de ton navigateur ( à faire systématiquement quand on modifie du code javascript ou css )



Messages postés
31
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
20 novembre 2020
3
Non rien n'a changer est j'ai vider le cache (Ctrl-Maj-Suppr).

Mon alerte :



Mon code Js / app-add_facture.js
$(document).ready(function(){      
        var id = 1; 
        /*Assigning id and class for tr and td tags for separation.*/
        $("#button_send").click(function(){
            var articlee = $("#article").val() == "Pas de produit" ? $("#newarticle").val() : $("#article").val();
            alert("articlee  : " + articlee );
            var newid = id++; 
            $("#table").append(`<tr valign="top" id="${newid}">
            <td width="100px" class="numeros${newid}">${$("#numeros").val()}</td>
            <td width="100px" class="article${newid} line">${articlee}</td>
            <td width="100px" class="referencearticle${newid} line">${$("#referencearticle").val()}</td>
            <td width="100px" class="cout${newid}">${$("#cout").val()}</td>
            <td width="100px" class="quantite${newid}">${$("#quantite").val()}</td>
            <td width="100px" class="tva${newid}">${$("#tva").val()} %</td>
            <td width="100px" class="remise${newid}">${$("#remise").val()} %</td>
            <td width="100px"><a href="javascript:void(0);" class="remCF"><i class='bx bx-x red'></i></a></td></tr>`);
        });



Html n'a pas changer pas.
Messages postés
30235
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 novembre 2020
2 993
Dis... tout à l'heure je t'ai dit quoi concernant la VALEUR à utiliser dans ton IF ???

A ton avis... quelle est la VALUE de l'option sur laquelle tu fais ton IF ?
   <option value="Pas d'article">Selectionner un article</option>

Messages postés
31
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
20 novembre 2020
3
Logiquement c'est Pas d'article
la valeur = value

Ah mince c'est Pas d'article
J'ai copie pas de produit

J'ai remplacer "Pas de produit" par "Pas d'article"

$(document).ready(function(){      
        var id = 1; 
        /*Assigning id and class for tr and td tags for separation.*/
        $("#button_send").click(function(){
            var articlee = $("#article").val() == "Pas d'article'" ? $("#newarticle").val() : $("#article").val();
            alert("article  : " + articlee );
            var newid = id++; 
            $("#table").append(`<tr valign="top" id="${newid}">
            <td width="100px" class="numeros${newid}">${$("#numeros").val()}</td>
            <td width="100px" class="article${newid} line">${articlee}</td>
            <td width="100px" class="referencearticle${newid} line">${$("#referencearticle").val()}</td>
            <td width="100px" class="cout${newid}">${$("#cout").val()}</td>
            <td width="100px" class="quantite${newid}">${$("#quantite").val()}</td>
            <td width="100px" class="tva${newid}">${$("#tva").val()} %</td>
            <td width="100px" class="remise${newid}">${$("#remise").val()} %</td>
            <td width="100px"><a href="javascript:void(0);" class="remCF"><i class='bx bx-x red'></i></a></td></tr>`);
        });


Il y a eu un changement dans l'alerte maintenant si je rentre une donnée du select ca l'affiche mais quand je choisit le 2 eme input ca mes Pas d'article

A autant pour moi j'ai pas vue le '
Ducoup ca marche <3
Messages postés
30235
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 novembre 2020
2 993 >
Messages postés
31
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
20 novembre 2020

voilou
Messages postés
30235
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 novembre 2020
2 993 >
Messages postés
31
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
20 novembre 2020

Au passage, plutôt que de jongler avec du text .... prends l'habitude de travailler avec des numériques...

Pas de produit => value = 0
Le produit trucbidule ... value = son id

<?php foreach($article as $articlee): ?>
   <option value="<?= $articlee['id'] ?>"><?= $articlee['article'] ?></option>
<?php endforeach; ?>
Messages postés
31
Date d'inscription
lundi 30 décembre 2019
Statut
Membre
Dernière intervention
20 novembre 2020
3 >
Messages postés
30235
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 novembre 2020

Ok merci du petit conseil , juste un grand merci à toi tu es génie :').