Comment puis-je envoyer l'identifiant d'une case cochée contenant une catégorie à ajax et afficher les sous-catégories liées à cette case cochée ?
P粉245489391
P粉245489391 2023-09-12 22:54:35
0
1
512

J'ai réussi à envoyer la valeur de la case à cocher qui est l'identifiant de la catégorie lorsque la case est cochée et à afficher les sous-catégories liées à la sous-catégorie sélectionnée sur la même page, mais lorsque je clique sur plusieurs catégories et que je décoche à nouveau toutes les cases, j'ai du mal à afficher une sous-catégorie lorsqu'elle se trouve dans une des catégories. Comme je coche et décoche les valeurs à tout moment, je souhaite supprimer l'affichage uniquement des sous-catégories de la catégorie non cochée. Ceci est mon code, j'espère que vous comprenez ce que je veux dire, merci

**visage**

<script>
function showUser(str) {
  if (str == "") {
    document.getElementById("txtHint").innerHTML = "";
    return;
  } else {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {

        document.getElementById("txtHint").innerHTML += this.responseText;
    
      }
    };

    
    xmlhttp.open("POST","getsubcat.php?q="+str,true);
    xmlhttp.send();
    
  }
}
</script>

JQuery

<script>
         
          $(function() {
    //code here
    $('input[type=checkbox]').on('change', function() {
    if($(this).is(':checked')) {
        showUser($(this).val());
    }
    
    
    else{
        
        showUser("");
    }
});
          
         
});
          
      </script>

Case à cocher de catégorie

<?php
          
          
            foreach($cat as $row)
            {
                
            ?> 
           <input class = "messageCheckbox" type = "checkbox" id = "check" value = "<?php echo $row["id"]; ?>">
           <label for = "check"><?php echo $row["name"]; ?></label>
           
           
           <?php
            }
           ?>
    
    <br>
    
    <div id="txtHint"><b></b></div>

getsubcat.php

<?php
$q = intval($_GET['q']);


$result = $link->query("SELECT *
FROM subcat WHERE cat_id = '".$q."'");

?>
<div class = "checkbox">
    
<?php
while($row = mysqli_fetch_array($result)) {
    
?>

<input type="checkbox" id="sub_cat" name="sub_cat" value="<?php echo $row['subcat']; ?>">
<label for="sub_cat"> <?php echo $row['subcat'];  ?></label><br>

<?php 
}


?>

J'essaie de résoudre le problème en utilisant le code de requête j ci-joint, mais lorsque je coche la case, toutes les sous-catégories sont affichées avec la case cochée, mais lorsqu'une case est décochée, toutes les sous-catégories sont affichées. Catégorie

P粉245489391
P粉245489391

répondre à tous(1)
P粉938936304

Le problème est que lorsque vous décochez une case, vous effacez tout :

function showUser(str) {
  if (str == "") {
    document.getElementById("txtHint").innerHTML = "";
    return;
  }
  ...
}
$('input[type=checkbox]').on('change', function() {
    if($(this).is(':checked')) {
        showUser($(this).val());
    }
    
    
    else{
        
        showUser("");
    }

Pour résoudre ce problème, vous devez identifier l'élément donné cat_id d'une manière ou d'une autre, par exemple vous pouvez ajouter l'attribut data :

<input type="checkbox" id="sub_cat" name="sub_cat" value="<?php echo $row['subcat']; ?>" data-cat="<?php echo $q ?>">
<label for="sub_cat" data-cat="<?php echo $q ?>"> <?php echo $row['subcat'];  ?></label><br>

Lorsque vous souhaitez décocher la case, vous pouvez utiliser cet attribut de données pour trouver l'élément que vous souhaitez supprimer :

function hideUser(str) {
   $('[data-cat="' + str + '"]').remove();
}

$('input[type=checkbox]').on('change', function() {
    const user = $(this).val();
    if($(this).is(':checked')) {
        showUser(user);
    } else{
        hideUser(user);
    }
});
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!