Probleme dans mon script de multi insertion en Js , Qjery

Résolu
ScreamFR Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -  
ScreamFR Messages postés 73 Date d'inscription   Statut Membre Dernière intervention   -
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 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
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   Statut Membre Dernière intervention   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.
0
jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
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   Statut Membre Dernière intervention   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
0
jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746 > ScreamFR Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
voilou
0
jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention   4 746 > ScreamFR Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   3 > jordane45 Messages postés 38480 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ok merci du petit conseil , juste un grand merci à toi tu es génie :').
0