J'exécute un script ajax qui doit vérifier une liste de cases à cocher pour déterminer
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é. pre>
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é?
3 Réponses :
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>
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.
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) });
Le nom de la catégorie est sûrement incorrect, c'est la principale erreur de la question.
var categories = []; for (var checkbox of checkboxes) { if (checkbox.checked) categories.push(checkbox.value); } category = categories.join(",");
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.