web-dev-qa-db-fra.com

Obtenir plusieurs valeurs de case à cocher sélectionnées dans une chaîne en javascript et PHP

J'ai le nom d'emplacement et l'ID d'emplacement dans la table de base de données. En utilisant la boucle foreach, j'imprime les valeurs dans la case à cocher en PHP. J'ai un bouton d'envoi qui déclenche un javascript. Je veux que l'utilisateur sélectionne toutes les valeurs de case à cocher séparées par une virgule, dans une variable javascript. Comment puis-je faire ceci?

    <!-- Javascript -->
<script>
        function getLoc(){
                var all_location_id = document.getElementByName("location[]").value;
                     var str = <!-- Here I want the selected checkbox values, eg: 1, 4, 6 -->

            }
        <script>

foreach($cityrows as $cityrow){
echo '<input type="checkbox" name="location[]" value="'.$cityrow['location_id'].'" />'.$cityrow['location'];
echo '<br>';
}
echo '<input name="searchDonor" type="button" class="button" value="Search Donor" onclick="getLoc()" />';
4
Alien2828
var checkboxes = document.getElementsByName('location[]');
var vals = "";
for (var i=0, n=checkboxes.length;i<n;i++) 
{
    if (checkboxes[i].checked) 
    {
        vals += ","+checkboxes[i].value;
    }
}
if (vals) vals = vals.substring(1);
20
user7789076

Ceci est une variante pour obtenir toutes les cases à cocher dans all_location_id sans utiliser d'instruction "if" 

var all_location_id = document.querySelectorAll('input[name="location[]"]:checked');

var aIds = [];

for(var x = 0, l = all_location_id.length; x < l;  x++)
{
    aIds.Push(all_location_id[x].value);
}

var str = aIds.join(', ');

console.log(str);
2
ilpaijin
var fav = [];
$.each($("input[name='name']:checked"), function(){            
    fav.Push($(this).val());
});

Il vous donnera la valeur séparée par des virgules

2
Manmeet Khurana

Ce code fonctionne bien pour moi, ici je convertis un tableau en chaîne avec ~ signe

    <input type="checkbox" value="created" name="today_check"><strong>&nbsp;Created&nbsp;&nbsp;</strong>
    <input type="checkbox" value="modified" name="today_check"><strong>&nbsp;Modified&nbsp;</strong>    
 <a class="get_tody_btn">Submit</a>

<script type="text/javascript">
        $('.get_tody_btn').click(function(){
            var ck_string = "";
            $.each($("input[name='today_check']:checked"), function(){  
                ck_string += "~"+$(this).val();  
            });
            if (ck_string ){
                ck_string = ck_string .substring(1);
            }else{
                alert('Please choose atleast one value.');
            }


        });
    </script>
0
sandeep kumar

Si vous utilisez jQuery, vous pouvez mettre les cases à cocher dans un formulaire puis utiliser quelque chose comme ceci:

var formData = jQuery("#" + formId).serialize();

$.ajax({
      type: "POST",
      url: url,
      data: formData,
      success: success
}); 
0
John

Dans certains cas, il peut être plus judicieux de traiter chaque élément sélectionné un à la fois. 

En d'autres termes, lancez un appel serveur distinct pour chaque élément sélectionné en transmettant la valeur de l'élément sélectionné. Dans certains cas, la liste devra être traitée dans son ensemble, mais dans d'autres pas. 

J'avais besoin de traiter une liste de personnes sélectionnées, puis d'afficher les résultats de la requête sur une page existante sous les données existantes de cette personne. J'ai d'abord pensé transmettre la liste complète au serveur, analyser la liste, puis renvoyer les données pour tous les patients. J'aurais alors dû analyser les données renvoyées et les insérer dans la page à chacun des emplacements appropriés. L'envoi de la demande de données, une personne à la fois, s'est avéré beaucoup plus facile. Le Javascript pour obtenir les éléments sélectionnés est décrit ici: cochez si la case est cochée javascript et jQuery est décrit ici: Comment vérifier si une case est cochée dans jQuery?

0
John