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

Ответы:

1064

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

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

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

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

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

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

if ($('#check_id').is(":checked"))
{
  // it is checked
}
Sarfraz
источник
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")

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

Грег А
источник
15
$('#checkbox_id').val();
$('#checkbox_id').is(":checked");
$('#checkbox_id:checked').val();
Налан Мадхесваран
источник
не работает. вам может понадобиться столбец перед проверкой ': флажок'
полезноBee
9
.val () не работает. Возвращает «вкл» независимо от отмеченного.
Майкл Коул
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
});
ttrasn
источник
0

Используйте следующий код:

$('input[name^=CheckBoxInput]').val();
Myint Thu Lwin
источник
0
$('.class[value=3]').prop('checked', true);
Jacksonit.org
источник
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);
hoogw
источник