2
votes

Javascript s'affiche uniquement si la case à cocher a une valeur?

J'exécute un script ajax qui doit vérifier une liste de cases à cocher pour déterminer

  1. Une case à cocher est-elle cochée
  2. A-t-il une valeur
  3. Transmettre la valeur à un fichier de fonction

Mon problème est que si rien n'a été sélectionné, la valeur passée est "". Lorsque le fichier de fonction obtient une valeur sans rien dedans, il ne trouve pas de correspondance et ne renvoie rien.

Pour résoudre ce problème, je dois soit transmettre un statut nul au fichier, soit d'abord vérifier si un élément est sélectionné avant de traiter cette partie du script.

J'utilise le script suivant pour ce faire. Cependant, il ne reconnaît pas lorsqu'un élément a été vérifié.

Question:

Comment puis-je cocher la case a été cochée avant le traitement ou passer une valeur nulle si rien n'a été coché?


2 commentaires

La première chose que je remarque est que vous avez var checkboxes = document.getElementsByName ('category'); . Cela ne devrait-il pas être «public» plutôt que «catégorie»?


Merci Tim. Je dois cocher les sections une est la catégorie un est le public. Je viens de copier le mauvais.


3 Réponses :


0
votes

Ajoutez simplement un bouton d'envoi pour activer votre script. De cette façon, vous pouvez d'abord cocher toutes les cases, puis envoyer

<form id="myForm">
 <div class="col-12">
       <label class="h6 my-3 pr-0" id="audience" for="language">Audiences</label>
        <div class="form-check">
            <input class="form-check-input" name="audience" type="checkbox" id="26" value="adult">
            <label class="form-check-label" for="26">Adult</label>
        </div><div class="form-check">
            <input class="form-check-input" name="audience" type="checkbox" id="28" value="children">
            <label class="form-check-label" for="28">Children</label>
        </div><div class="form-check">
            <input class="form-check-input" name="audience" type="checkbox" id="27" value="teen">
            <label class="form-check-label" for="27">Teen</label>
        </div>
        <input class="btn btn-accent mb-3 mt-3 mb-0 ajax" type="submit" id="submit" name="submit" value="Search">
    </div>
<input type="submit" value="submit" />
</form>
<script>
document.getElementById('myForm').addEventListener('submit', function(e) {
  e.preventDefault();
  myScript(); // call your javascript here
});
</script>


1 commentaires

La question était de préparer les données pour les envoyer via AJAX. L'op peut être en train d'apprendre AJAX, auquel cas une réponse qui n'y fait pas face peut être inutile.



3
votes

Vous devrez attacher un écouteur d'événements en appelant addEventListener () . Écoutez l'événement change pour détecter le fait de cocher / décocher la case.

const checkbox = document.querySelector(
  'input[name= category]'
);
checkbox.addEventListener('change', event => {
  // insert your function
  console.log(event)
});


1 commentaires

Le nom de la catégorie est sûrement incorrect, c'est la principale erreur de la question.



0
votes
var categories = [];
for (var checkbox of checkboxes) {
    if (checkbox.checked) categories.push(checkbox.value);
}
category = categories.join(",");

0 commentaires