Получить значение флажка в jQuery


Ответы:


1064

Чтобы получить значение атрибута Value, вы можете сделать что-то вроде этого:

$("input[type='checkbox']").val();

Или, если вы установили classили idдля него, вы можете:

$('#check_id').val();
$('.check_class').val();

Однако это вернет то же самое значение, независимо от того, отмечено оно или нет, это может сбить с толку, поскольку оно отличается от представленного поведения формы.

Чтобы проверить, проверено это или нет, выполните:

if ($('#check_id').is(":checked"))
{
  // it is checked
}

3
Что делает первый пример, если на странице есть несколько флажков? Кстати, это может быть написано более коротким способом $("input:checkbox"). Кроме того, кажется, что опечатка в селекторе классов ...
Jawa

1
@Jawa: первый был просто примером, чтобы показать синтаксис и спасибо за эту опечатку.
Сарфраз

136
Если я попробую $($0).val()в Chrome и сниму флажок, ответ «включен», даже если он не отмечен. Но $($0).is(":checked")возвращает правильное значение.
Адриен

2
@Jawa Per api.jquery.com/checkbox-selector [type="checkbox"] имеет лучшую производительность в современных браузерах, чем :checkbox.
TrueWill

3
Заменить $('#check_id').val();на $('#check_id').is(":checked");возвращаемое значение true или false.
Матеус Миранда

228

Эти 2 способа работают:

  • $('#checkbox').prop('checked')
  • $('#checkbox').is(':checked')(спасибо @mgsloan)

$('#test').click(function() {
    alert("Checkbox state (method 1) = " + $('#test').prop('checked'));
    alert("Checkbox state (method 2) = " + $('#test').is(':checked'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Check me: <input id="test" type="checkbox" />


9
.is («проверил») не работал, потому что это должен быть .is («: проверил»)
mgsloan

Спасибо за ваш ответ. Это современный ответ с функцией jQuery prop ()
Thomas.Benz

58

Попробуйте это небольшое решение:

$("#some_id").attr("checked") ? 1 : 0;

или

$("#some_id").attr("checked") || 0;

Или !! ($ ("# some_id"). Attr ("проверено"))
COOLGAMETUBE

34

Единственный правильный способ получения значения флажка заключается в следующем

if ( elem.checked ) 
if ( $( elem ).prop( "checked" ) ) 
if ( $( elem ).is( ":checked" ) ) 

как объяснено в официальной документации на сайте jQuery. Остальные методы не имеют ничего общего со свойством флажка, они проверяют атрибут, что означает, что они проверяют начальное состояние флажка, когда он был загружен. Итак, вкратце:

  • Когда у вас есть элемент, и вы знаете, что это флажок, вы можете просто прочитать его свойство, и вам не понадобится jQuery для этого (то есть elem.checked), или вы можете использовать$(elem).prop("checked") если хотите положиться на jQuery.
  • Если вам нужно знать (или сравнить) значение, когда элемент был впервые загружен (то есть значение по умолчанию), правильный способ сделать это $(elem).is(":checked").

Ответы вводят в заблуждение, пожалуйста, проверьте ниже себя:

http://api.jquery.com/prop/


.is(":checked")и .prop(":checked")работают одинаково для меня с JQuery 1.10.0
Джош

23

Просто чтобы уточнить вещи:

$('#checkbox_ID').is(":checked")

Вернет «истина» или «ложь»



11
jQuery(".checkboxClass").click(function(){
        var selectedCountry = new Array();
        var n = jQuery(".checkboxClass:checked").length;
        if (n > 0){
            jQuery(".checkboxClass:checked").each(function(){
                selectedCountry.push($(this).val());
            });
        }
        alert(selectedCountry);
    });

10

Простой, но эффективный и предполагает, что вы знаете, флажок будет найден:

$("#some_id")[0].checked;

Дает true/false


9
//By each()
var testval = [];
 $('.hobbies_class:checked').each(function() {
   testval.push($(this).val());
 });


//by map()
var testval = $('input:checkbox:checked.hobbies_class').map(function(){
return this.value; }).get().join(",");

 //HTML Code

 <input type="checkbox" value="cricket" name="hobbies[]"  class="hobbies_class">Cricket 
  <input type="checkbox" value="hockey" name="hobbies[]" class="hobbies_class">Hockey

Пример
Демо


5

Несмотря на то, что этот вопрос требует решения jQuery, здесь есть чистый ответ на JavaScript, поскольку никто его не упомянул.

Без jQuery:

Просто выберите элемент и получите доступ к checkedсвойству (которое возвращает логическое значение).

var checkbox = document.querySelector('input[type="checkbox"]');

alert(checkbox.checked);
<input type="checkbox"/>


Вот быстрый пример прослушивания changeсобытия:

var checkbox = document.querySelector('input[type="checkbox"]');
checkbox.addEventListener('change', function (e) {
    alert(this.checked);
});
<input type="checkbox"/>


Чтобы выбрать отмеченные элементы, используйте :checkedпсевдокласс (input[type="checkbox"]:checked ).

Вот пример, который перебирает проверенные inputэлементы и возвращает сопоставленный массив имен проверенных элементов.

Пример здесь

var elements = document.querySelectorAll('input[type="checkbox"]:checked');
var checkedElements = Array.prototype.map.call(elements, function (el, i) {
    return el.name;
});

console.log(checkedElements);


1
Это не отвечает на вопрос.
Майкл Коул

@MichaelCole - я просто перечитал вопрос (3 года спустя), и похоже, что он действительно отвечает на вопрос, поэтому не стесняйтесь уточнять.
Джош Крозье

1
"Как я могу получить значение флажка в jQuery?" -> «Несмотря на то, что этот вопрос требует решения jQuery ... бла-бла-бла». Это ответ на мыльницу, как и другие реальные ответы, и поэтому я отказался от него.
Майкл Коул

1
@MichaelCole - Справедливо, обратная связь всегда приветствуется. Первоначальная цель этого ответа заключалась в том, чтобы указать, что jQuery можно избежать в таких тривиальных случаях, как этот, когда checkedсвойство легко доступно для собственного элемента DOM. Некоторые из людей, которые ищут такие вопросы / ответы, как правило, не знают о том, что JQuery иногда не требуется. Другими словами, ограниченные люди не являются целевой демографической для этого ответа.
Джош Крозье

2

Вот как получить значение всех отмеченных флажков в виде массива:

var values = (function() {
                var a = [];
                $(".checkboxes:checked").each(function() {
                    a.push(this.value);
                });
                return a;
            })()

2

получить значение проверенного checkboxex в jquery:

var checks = $("input[type='checkbox']:checked"); // returns object of checkeds.

for(var i=0; i<checks.length; i++){
    console.log($(checks[i]).val()); // or do what you want
});

в pure js:

var checks = document.querySelectorAll("input[type='checkbox']:checked");

for(var i=0; i<checks.length; i++){
    console.log(checks[i].value); // or do what you want
});


0
$('.class[value=3]').prop('checked', true);

1
Вопрос в том, как получить значение, а не в том, как проверить что-либо с определенным значением по умолчанию.
Квентин

0

Лучший способ это $('input[name="line"]:checked').val()

А также вы можете получить выделенный текст $('input[name="line"]:checked').text()

Добавьте значение атрибута и имя для ваших входов переключателя. Убедитесь, что все входы имеют одинаковый атрибут name.

<div class="col-8 m-radio-inline">
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="1" checked> Value Text 1
    </label>
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="2"> Value Text 2
    </label>
    <label class="m-radio m-radio-filter">
        <input type="radio" name="line" value="3"> Value Text 3
    </label>
</div>

-1
<script type="text/javascript">
$(document).ready(function(){
    $('.laravel').click(function(){
        var val = $(this).is(":checked");
        $('#category').submit();
    });
});

<form action="{{route('directory')}}" method="post" id="category">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
                        <input name="category" value="{{$name->id}}"  class="laravel" type="checkbox">{{$name->name}}
                      </form>

-1

Просто внимание, по состоянию на сегодня, 2018, из-за изменения API с годами. removeAttr запрещены, больше не работают!

Jquery Установите или снимите флажок:

Плохо, больше не работает.

   $('#add_user_certificate_checkbox').removeAttr("checked");

   $('#add_user_certificate_checkbox').attr("checked","checked");

Вместо этого вы должны сделать:

      $('#add_user_certificate_checkbox').prop('checked', true);
      $('#add_user_certificate_checkbox').prop('checked', false);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.