użyj jQuery, aby uzyskać wartości zaznaczonych pól wyboru

84

Chcę przejść przez pole wyboru „locationthemes” i zbudować ciąg ze wszystkimi wybranymi wartościami. Zatem po zaznaczeniu pola wyboru 2 i 4 wynik będzie wyglądał następująco: „3,8”

<input type="checkbox" name="locationthemes" id="checkbox-1" value="2" class="custom" />
<label for="checkbox-1">Castle</label>
<input type="checkbox" name="locationthemes" id="checkbox-2" value="3" class="custom" />
<label for="checkbox-2">Barn</label>
<input type="checkbox" name="locationthemes" id="checkbox-3" value="5" class="custom" />
<label for="checkbox-3">Restaurant</label>
<input type="checkbox" name="locationthemes" id="checkbox-4" value="8" class="custom" />
<label for="checkbox-4">Bar</label>

Sprawdziłem tutaj: http://api.jquery.com/checked-selector/, ale nie ma przykładu, jak wybrać grupę checkbox po jej nazwie.

Jak mogę to zrobić?

Flo
źródło

Odpowiedzi:

181

W jQuery po prostu użyj selektora atrybutów, takiego jak

$('input[name="locationthemes"]:checked');

aby wybrać wszystkie zaznaczone dane wejściowe o nazwie „locationthemes”

console.log($('input[name="locationthemes"]:checked').serialize());

//or

$('input[name="locationthemes"]:checked').each(function() {
   console.log(this.value);
});

Próbny


W VanillaJS

[].forEach.call(document.querySelectorAll('input[name="locationthemes"]:checked'), function(cb) {
   console.log(cb.value); 
});

Próbny


W ES6 / operator spreadu

[...document.querySelectorAll('input[name="locationthemes"]:checked')]
   .forEach((cb) => console.log(cb.value));

Próbny

Fabrizio Calderan
źródło
5
Ty, mój przyjacielu, ratujesz życie.
Haring 10
Szczególnie podoba mi się pomysł używania logów konsoli. Dziękuję za to.
Więc S
32
$('input:checkbox[name=locationthemes]:checked').each(function() 
{
   // add $(this).val() to your array
});

Działające demo

LUB

Użyj is()funkcji jQuery :

$('input:checkbox[name=locationthemes]').each(function() 
{    
    if($(this).is(':checked'))
      alert($(this).val());
});

Wcześniejsze

Talha
źródło
19

Mapowanie tablicy jest najszybsze i najczystsze.

var array = $.map($('input[name="locationthemes"]:checked'), function(c){return c.value; })

zwróci wartości jako tablicę, taką jak:

array => [2,3]

założenie zamku i stodoły zostało sprawdzone, a pozostałych nie.

Steffan Perry
źródło
13

$("#locationthemes").prop("checked")

usr4217
źródło
To powinien być komentarz
Gajendra K Chauhan
12

Korzystanie z mapfunkcji jquery

var checkboxValues = [];
$('input[name=checkboxName]:checked').map(function() {
            checkboxValues.push($(this).val());
});
MaylorTaylor
źródło
przy założeniu, że w tym przykładzie pole wyboru powinno mieć wartość „locationthemes”
hrabinowitz
5
You can also use the below code
$("input:checkbox:checked").map(function()
{
return $(this).val();
}).get();
Tushar Sagar
źródło
1
Jak przypisać ten wynik do zmiennej
Mano Johnbritto
2

A więc wszystko w jednej linii:

var checkedItemsAsString = $('[id*="checkbox"]:checked').map(function() { return $(this).val().toString(); } ).get().join(",");

.. uwaga na temat selektora [id*="checkbox"], spowoduje to pobranie dowolnego elementu zawierającego ciąg „checkbox”. Trochę niezdarnie tutaj, ale naprawdę dobrze, jeśli próbujesz wyciągnąć wybrane wartości z czegoś takiego jak .NET CheckBoxList. W takim przypadku „pole wyboru” byłoby nazwą nadaną kontrolce CheckBoxList.

mikrofon
źródło
1
Jest to przydatne @mike
Yii2Developer
2

Źródło - więcej szczegółów

Uzyskaj wartość wybranych pól wyboru za pomocą jQuery

Następnie piszemy skrypt jQuery, aby uzyskać wybraną wartość pola wyboru w tablicy za pomocą jQuery each (). Używając tej funkcji jQuery, uruchamia pętlę, aby pobrać sprawdzoną wartość i umieścić ją w tablicy.

<!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>Get Selected Checkboxes Value Using jQuery</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $(".btn").click(function() {
                var locationthemes = [];
                $.each($("input[name='locationthemes']:checked"), function() {
                    locationthemes.push($(this).val());
                });
                alert("My location themes colors are: " + locationthemes.join(", "));
            });
        });
    </script>
    </head>
    <body>
        <form method="POST">
        <h3>Select your location themes:</h3>
        <input type="checkbox" name="locationthemes" id="checkbox-1" value="2" class="custom" />
        <label for="checkbox-1">Castle</label>
        <input type="checkbox" name="locationthemes" id="checkbox-2" value="3" class="custom" />
        <label for="checkbox-2">Barn</label>
        <input type="checkbox" name="locationthemes" id="checkbox-3" value="5" class="custom" />
        <label for="checkbox-3">Restaurant</label>
        <input type="checkbox" name="locationthemes" id="checkbox-4" value="8" class="custom" />
        <label for="checkbox-4">Bar</label>
        <br>
        <button type="button" class="btn">Get Values</button>
    </form>
    </body>
    </html>
thecodedeveloper.com
źródło
2
var SlectedList = new Array();
$("input.yorcheckboxclass:checked").each(function() {
     SlectedList.push($(this).val());
});
Khurram Shaukat
źródło
1
Proszę podać wyjaśnienie wraz z odpowiedzią.
Zmiana kolejności słów
1
var voyageId = new Array(); 
$("input[name='voyageId[]']:checked:enabled").each(function () {
   voyageId.push($(this).val());
});      
Anmol Mourya
źródło
Aktualizacja:var voyageIds = $('input[name="voyageId[]"]:checked:enabled').map(function() {return this.value; }).get();
William
0

Jquery 3.3.1, pobieranie wartości dla wszystkich zaznaczonych pól wyboru po kliknięciu przycisku

$(document).ready(function(){
 $(".btn-submit").click(function(){
  $('.cbCheck:checkbox:checked').each(function(){
	alert($(this).val())
  });
 });			
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="vehicle1" name="vehicle1"  class="cbCheck" value="Bike">
  <label for="vehicle1"> I have a bike</label><br>
  <input type="checkbox" id="vehicle2" name="vehicle2"  class="cbCheck" value="Car">
  <label for="vehicle2"> I have a car</label><br>
  <input type="checkbox" id="vehicle3" name="vehicle3"  class="cbCheck" value="Boat">
  <label for="vehicle3"> I have a boat</label><br><br>
  <input type="submit" value="Submit" class="btn-submit">

Bhanu Pratap
źródło
0

Nieco bardziej nowoczesny sposób:

const selectedValues = $('input[name="locationthemes"]:checked').map( function () { 
        return $(this).val(); 
    })
    .get()
    .join(', ');

Najpierw znajdujemy wszystkie zaznaczone pola wyboru o podanej nazwie, a następnie map () jQuery wykonuje iterację po każdym z nich, wywołując wywołanie zwrotne w celu uzyskania wartości i zwracając wynik jako nową kolekcję jQuery, która teraz zawiera wartości pól wyboru. Następnie wywołujemy get (), aby uzyskać tablicę wartości, a następnie join (), aby połączyć je w pojedynczy ciąg - który jest następnie przypisywany do stałej selectedValues.

ivanhoe
źródło