Probleme dans mon script de multi insertion en Js , Qjery

Résolu/Fermé
ScreamFR Messages postés 73 Date d'inscription lundi 30 décembre 2019 Statut Membre Dernière intervention 19 mai 2022 - Modifié le 19 nov. 2020 à 19:44
ScreamFR Messages postés 73 Date d'inscription lundi 30 décembre 2019 Statut Membre Dernière intervention 19 mai 2022 - 20 nov. 2020 à 00:59
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.
A voir également:

2 réponses

jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
19 nov. 2020 à 19:44
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 )



1
ScreamFR Messages postés 73 Date d'inscription lundi 30 décembre 2019 Statut Membre Dernière intervention 19 mai 2022 3
19 nov. 2020 à 20:13
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.
0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
19 nov. 2020 à 21:07
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>

0
ScreamFR Messages postés 73 Date d'inscription lundi 30 décembre 2019 Statut Membre Dernière intervention 19 mai 2022 3
Modifié le 20 nov. 2020 à 00:07
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
0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689 > ScreamFR Messages postés 73 Date d'inscription lundi 30 décembre 2019 Statut Membre Dernière intervention 19 mai 2022
19 nov. 2020 à 23:58
voilou
0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689 > ScreamFR Messages postés 73 Date d'inscription lundi 30 décembre 2019 Statut Membre Dernière intervention 19 mai 2022
20 nov. 2020 à 00:00
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; ?>
0
ScreamFR Messages postés 73 Date d'inscription lundi 30 décembre 2019 Statut Membre Dernière intervention 19 mai 2022 3 > jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024
20 nov. 2020 à 00:59
Ok merci du petit conseil , juste un grand merci à toi tu es génie :').
0