Установка отмечена флажком с помощью jQuery

Я хочу сделать что-то вроде этого, чтобы отметить checkbox с помощью jQuery:

$(".myCheckBox").checked(true);

or

$(".myCheckBox").selected(true);

Такое существует?


person tpower    schedule 08.01.2009    source источник
comment
Более конкретный (и очень полезный!) Вопрос, как мне проверить элемент в флажке, установленном ПО ЗНАЧЕНИЮ? Я думаю, мы также можем обсудить здесь, и я опубликовал ответ ниже.   -  person Peter Krauss    schedule 09.03.2012
comment
Проверьте другие способы сделать это с помощью jQuery здесь stackoverflow.com/a/22019103/1868660   -  person Subodh Ghulaxe    schedule 25.02.2014
comment
Если вам нужно инициировать событие onchange, это $("#mycheckbox").click();   -  person HumanInDisguise    schedule 11.05.2015
comment
Проверка чего-либо предполагает его тестирование, поэтому я думаю, что «Установить флажок» - более понятный и лучший заголовок.   -  person Alireza    schedule 12.05.2015
comment
prop (); функция - прекрасный ответ. См. Определение функции - api.jquery.com/prop   -  person yogihosting    schedule 23.05.2016
comment
attr () не работает с IE. использование prop () - лучший вариант   -  person divine    schedule 26.04.2017


Ответы (42)


Современный jQuery

Используйте .prop():

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

DOM API

Если вы работаете только с одним элементом, вы всегда можете просто получить доступ к базовому HTMLInputElement < / a> и измените его свойство .checked:

$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;

Преимущество использования методов .prop() и .attr() вместо этого заключается в том, что они будут работать со всеми совпадающими элементами.

jQuery 1.5.x и ниже

Метод .prop() недоступен, поэтому необходимо использовать .attr().

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

Обратите внимание, что это подход, используемый модульными тестами jQuery. до версии 1.6 и предпочтительнее использовать $('.myCheckbox').removeAttr('checked');, поскольку последний, если изначально был установлен флажок, изменит поведение вызова на _ 12_ в любой форме, которая его содержит - тонкое, но, вероятно, нежелательное изменение поведения.

Для получения дополнительной информации, неполное обсуждение изменений в обработке атрибута / свойства checked при переходе с 1.5.x на 1.6 можно найти в примечания к выпуску версии 1.6 и раздел Атрибуты и свойства в _ 14_ документация.

person Xian    schedule 08.01.2009
comment
Да, это установка значения атрибута, и снимите флажок, удалив атрибут. Я обновил свой ответ, чтобы показать это. - person Xian; 09.01.2009
comment
@Xian удаление отмеченного атрибута делает невозможным сброс формы - person mcgrailm; 23.03.2011
comment
Проблема здесь в том, что вам нужно что-то, что работает для обеих версий. В этом случае вы можете использовать плагин. :) Спасибо за обновления! - person cwharris; 07.05.2011
comment
В качестве побочного примечания, jQuery 1.6.1 должен исправить проблему, о которой я упоминал, поэтому мы можем технически все еще вернуться к использованию $ (...). Prop (...) - person cwharris; 14.05.2011
comment
Если вы работаете только с одним элементом, всегда будет быстрее всего использовать DOMElement.checked = true. Но это было бы ничтожно мало, потому что это всего лишь один элемент ... - person Tyler Crompton; 30.03.2012
comment
Как говорит Тайлер, это незначительное улучшение производительности. Для меня кодирование с использованием общего API делает его более читабельным, чем смешивание собственного API и jQuery API. Я бы придерживался jQuery. - person Katie Kilian; 04.05.2012
comment
@TylerCrompton - Конечно, дело не только в производительности, но выполнение $(element).prop('checked') - это пустая трата набора текста. element.checked существует и должен использоваться в тех случаях, когда у вас уже есть element - person gnarf; 02.10.2012
comment
Как я могу увидеть prop () в исходном коде. Я попытался выполнить поиск и нашел эти экземпляры, но ничего не показалось правильным: pix.realquadrant.com/jquery-prop < / а> - person Timothy; 11.07.2021

Использовать:

$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);

И если вы хотите проверить, установлен ли флажок:

$('.myCheckbox').is(':checked');
person bchhun    schedule 08.01.2009
comment
также $ (selector) .checked to check проверяется - person eomeroff; 03.05.2011
comment
Я попробовал этот точный код, и он не сработал для меня в случае флажка «выбрать все / не выбрать ничего», который должен проверять и снимать все флажки, а также проверять их состояние. Вместо этого я попробовал ответить @Christopher Harris, и это помогло. - person JD Smith; 28.03.2013
comment
Зачем использовать форму #mycheckbox вместо простого #mycheckbox? Идентификатор уже уникален во всем документе, его проще и быстрее выбрать напрямую. - person YuriAlbuquerque; 11.10.2013
comment
@YuriAlbuquerque, это был пример. вы можете использовать любой селектор, какой захотите. - person bchhun; 13.10.2013
comment
$ (selector) .checked не работает. В jQuery нет "проверенного" метода. - person SineSwiper; 07.10.2015
comment
@BrendanByrd Тем не менее, у объекта DOM есть свойство checked (без упаковки jQuery) - person bchhun; 13.10.2015

Это правильный способ установки и снятия флажков с помощью jQuery, поскольку это кроссплатформенный стандарт, и разрешает репосты форм.

$('.myCheckBox').each(function(){ this.checked = true; });

$('.myCheckBox').each(function(){ this.checked = false; });

Делая это, вы используете стандарты JavaScript для установки и снятия флажков, поэтому любой браузер, который правильно реализует свойство "checked" элемента checkbox, будет безупречно запускать этот код. Это должны быть все основные браузеры, но я не могу протестировать до Internet Explorer 9.

Проблема (jQuery 1.6):

Как только пользователь щелкает флажок, этот флажок перестает реагировать на изменения атрибута "checked".

Вот пример атрибута флажка, который не выполняет задание после того, как кто-то щелкнул флажок (это происходит в Chrome).

Fiddle

Решение:

Используя свойство JavaScript "checked" в элементах DOM, мы можем решить проблему напрямую, вместо того, чтобы пытаться манипулировать DOM делать то, что мы хотим.

Fiddle

Этот плагин изменяет отмеченное свойство любых элементов, выбранных jQuery, и успешно проверяет и снимает флажки при любых обстоятельствах. Таким образом, хотя это может показаться чрезмерным решением, оно улучшит пользовательский интерфейс вашего сайта и поможет предотвратить разочарование пользователей.

(function( $ ) {
    $.fn.checked = function(value) {
        if(value === true || value === false) {
            // Set the value of the checkbox
            $(this).each(function(){ this.checked = value; });
        } 
        else if(value === undefined || value === 'toggle') {
            // Toggle the checkbox
            $(this).each(function(){ this.checked = !this.checked; });
        }

        return this;
    };
})( jQuery );

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

// Check
$(':checkbox').prop('checked', true);

// Un-check
$(':checkbox').prop('checked', false);

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});
person cwharris    schedule 06.05.2011
comment
В вашем первом примере JSFiddle вы должны использовать removeAttr('checked'), а не attr('checked', false) - person Daniel X Moore; 30.01.2012
comment
@DanielXMoore, вы обходите стороной вопрос. Пример должен был показать, что после того, как пользователь щелкнул флажок, браузер больше не реагирует на checked изменения атрибутов, независимо от метода, использованного для их изменения. - person cwharris; 30.01.2012
comment
@ChristopherHarris Хорошо, ты прав, я это пропустил. Начиная с jQuery 1.6, разве вы не должны использовать метод .prop? $('.myCheckBox').prop('checked', true) Таким образом, он будет автоматически применяться ко всему набору совпадающих элементов (однако только при настройке получение по-прежнему будет только первым) - person Daniel X Moore; 02.02.2012
comment
да. prop определенно является подходящим способом установки атрибутов элемента. - person cwharris; 02.02.2012
comment
@ChristopherHarris, я добавил в плагин то, что мне нужно, чтобы обеспечить некоторую гибкость параметров. Это упростило встроенную обработку без преобразования типа. Особенно из разрозненных баз данных с «идеями» о том, что правда. Сценарий: jsfiddle.net/Cyberjetx/vcp96 - person Joe Johnston; 04.03.2014
comment
@JoeJohnston В идеальном мире это не должно быть встроено в плагин. Вместо этого его следует преобразовать в значение true / false перед использованием с плагином. Что сказать, что база данных не считает «0» истинным? Все зависит от базы данных. - person cwharris; 08.03.2014

Ты можешь сделать

$('.myCheckbox').attr('checked',true) //Standards compliant

or

$("form #mycheckbox").attr('checked', true)

Если у вас есть собственный код в событии onclick для флажка, который вы хотите активировать, используйте его вместо этого:

$("#mycheckbox").click();

Вы можете снять галочку, полностью удалив атрибут:

$('.myCheckbox').removeAttr('checked')

Вы можете установить все флажки следующим образом:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});
person Micah    schedule 08.01.2009
comment
вы также можете использовать $ (# myTable input: checkbox) .each (...); - person Chris Brandsma; 09.01.2009
comment
Вы также можете пойти $(".myCheckbox").click() - person RobertPitt; 20.09.2010
comment
@Michah удаление отмеченного атрибута делает невозможным сброс формы - person mcgrailm; 23.03.2011
comment
Этот ответ устарел, потому что в нем используется .attr вместо .prop. - person Blazemonger; 21.01.2014
comment
$("#mycheckbox").click(); работал у меня, так как я тоже слушал событие изменения, а .attr & .prop не запускал событие изменения. - person Damodar Bashyal; 01.05.2017

Вы также можете расширить объект $ .fn новыми методами:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

Тогда вы можете просто сделать:

$(":checkbox").check();
$(":checkbox").uncheck();

Или вы можете дать им более уникальные имена, такие как mycheck () и myuncheck (), если вы используете какую-то другую библиотеку, которая использует эти имена.

person livefree75    schedule 20.08.2010
comment
@ livfree75 удаление отмеченного атрибута делает невозможным сброс формы - person mcgrailm; 23.03.2011
comment
Этот ответ устарел, потому что в нем используется .attr вместо .prop. - person Blazemonger; 21.01.2014

$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

Последний вызовет событие щелчка для флажка, остальные - нет. Поэтому, если у вас есть собственный код в событии onclick для флажка, который вы хотите активировать, используйте последний.

person Chris Brandsma    schedule 08.01.2009
comment
верхний не удастся ... check не является членом объекта jquery - person redsquare; 09.01.2009
comment
Этот ответ устарел, потому что в нем используется .attr вместо .prop. - person Blazemonger; 21.01.2014
comment
IMO событие click ненадежно в Firefox и Edge. - person Vahid Amiri; 31.08.2019

Чтобы установить флажок, вы должны использовать

 $('.myCheckbox').attr('checked',true);

or

 $('.myCheckbox').attr('checked','checked');

и чтобы снять флажок, вы всегда должны устанавливать его в false:

 $('.myCheckbox').attr('checked',false);

Если вы это сделаете

  $('.myCheckbox').removeAttr('checked')

он удаляет атрибут полностью, и поэтому вы не сможете сбросить форму.

ПЛОХОЙ ДЕМО jQuery 1.6. Я думаю, что это не работает. Для 1.6 я собираюсь сделать новый пост об этом.

НОВАЯ РАБОЧАЯ ДЕМО-версия jQuery 1.5.2 работает в Chrome.

Обе демонстрации используют

$('#tc').click(function() {
    if ( $('#myCheckbox').attr('checked')) {
        $('#myCheckbox').attr('checked', false);
    } else {
        $('#myCheckbox').attr('checked', 'checked');
    }
});
person mcgrailm    schedule 23.03.2011
comment
Это неточно. установка для атрибута 'checked' значения '' не снимает флажки, по крайней мере, в chrome. - person cwharris; 06.05.2011
comment
@xixonia Я тестировал, прежде чем опубликовать вашу скрипку, не работает, потому что вы не изменили меню слева, чтобы включить jquery - person mcgrailm; 06.05.2011
comment
@xixonia еще раз спасибо. Кажется, это не работает так же в jauery 1.6, см. примечание выше, спасибо за добавление вашего решения. - person mcgrailm; 07.05.2011
comment
mcgralim - в 1.6 стало еще проще .... $(".mycheckbox").prop("checked", true/false) - person gnarf; 07.05.2011
comment
@gnarf это здорово, но теперь мне придется изменить это во всем моем коде 8 ^ ( - person mcgrailm; 07.05.2011
comment
@mcgrailm - он все еще не выпущен, но мы можем добавить некоторую обратную совместимость для .attr() с логическими атрибутами - хотя я бы хотел, чтобы мы этого не делали - Прочтите: forum.jquery.com/topic/prop-attr-rewrite-again - person gnarf; 07.05.2011
comment
@Blazemonger, вы имеете в виду, что используете .prop, а не .attr? - person mcgrailm; 21.01.2014
comment
Ваш ответ обещал новое актуальное решение, которого вы никогда не предоставляли. .attr уже более двух лет придерживается неправильного подхода к этой проблеме. - person Blazemonger; 21.01.2014
comment
В то время я опубликовал исправленный ответ, но это было 4 года назад, чувак. Я не обновляю все свои сообщения, и я уверен, что большинство людей этого не делают. Вы голосовали против поста четырехлетней давности, в котором говорилось, что он устарел, ну да - person mcgrailm; 21.01.2014
comment
@DaveRager в этом случае, однако, устаревшие ответы не только устарели, но и полностью избыточны, поскольку принятый ответ уже отлично покрывает их содержимое. Нет смысла обновлять устаревший ответ, если впоследствии он все еще не пригодится. - person Mark Amery; 15.12.2014
comment
@MarkAmery, вы упомянули, что мой пост ничего не добавил во время публикации, но это точно. Если вы посмотрите историю принятого ответа, вы обнаружите, что они предлагают удалить элемент. Из-за чего невозможно сбросить форму, поэтому я и опубликовал ее для начала. - person mcgrailm; 15.12.2014
comment
@mcgrailm Я пошел дальше и изменил принятый ответ в свете ваших замечаний. Если вы хотите взглянуть на него и проверить, хорошо ли он выглядит в текущем состоянии, я буду признателен. Еще раз приношу свои извинения за резкую критику, которая, по крайней мере частично, была в высшей степени ошибочной. - person Mark Amery; 15.12.2014

Это выбирает элементы, которые имеют указанный атрибут со значением, содержащим данную подстроку «ckbItem»:

$('input[name *= ckbItem]').prop('checked', true);

Он выберет все элементы, содержащие ckbItem в атрибуте name.

person Abou-Emish    schedule 20.09.2010

Если предположить, что вопрос в том ...

Как установить флажок ПО ЗНАЧЕНИЮ?

Помните, что в типичном наборе флажков все теги ввода имеют одинаковое имя, они отличаются атрибутом value: для каждого ввода набора нет идентификатора.

Ответ Сианя можно расширить с помощью более конкретного селектора, используя следующую строку кода:

$("input.myclass[name='myname'][value='the_value']").prop("checked", true);
person Community    schedule 09.03.2012

Я не могу найти решение. Я всегда буду использовать:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}
person Overbeeke    schedule 24.06.2012
comment
Это не отвечает на вопрос (вопрос касается установки, установлен ли флажок, а не определения, установлен ли флажок). Это также довольно уродливый способ определить, установлен ли флажок (с одной стороны, вы используете неочевидный факт, что .val() всегда будет возвращать undefined при вызове для элементов 0, чтобы определить, что объект jQuery пуст, когда вместо этого вы можете просто проверить его .length) - см. stackoverflow.com/questions/901712/ для более удобочитаемых подходов. - person Mark Amery; 15.12.2014

Чтобы установить флажок с помощью jQuery 1.6 или более поздней версии, просто сделайте следующее:

checkbox.prop('checked', true);

Чтобы снять отметку, используйте:

checkbox.prop('checked', false);

Вот что мне нравится использовать для переключения флажка с помощью jQuery:

checkbox.prop('checked', !checkbox.prop('checked'));

Если вы используете jQuery 1.5 или ниже:

checkbox.attr('checked', true);

Чтобы снять отметку, используйте:

checkbox.attr('checked', false);
person Ramon de Jesus    schedule 14.03.2013

Вот способ сделать это без jQuery

function addOrAttachListener(el, type, listener, useCapture) {
  if (el.addEventListener) {
    el.addEventListener(type, listener, useCapture);
  } else if (el.attachEvent) {
    el.attachEvent("on" + type, listener);
  }
};

addOrAttachListener(window, "load", function() {
  var cbElem = document.getElementById("cb");
  var rcbElem = document.getElementById("rcb");
  addOrAttachListener(cbElem, "click", function() {
    rcbElem.checked = cbElem.checked;
  }, false);
}, false);
<label>Click Me!
  <input id="cb" type="checkbox" />
</label>
<label>Reflection:
  <input id="rcb" type="checkbox" />
</label>

person Xitalogy    schedule 23.10.2012

Вот код для отмеченного и снятого с помощью кнопки:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
        });
        set=unset;
    });
});

Обновление: вот тот же блок кода, использующий новый метод Jquery 1.6+ prop, который заменяет attr:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
        });
        set=unset;
    });
});
person starjahid    schedule 25.10.2011
comment
Этот ответ устарел, потому что в нем используется .attr вместо .prop. - person Blazemonger; 21.01.2014

Попробуй это:

$('#checkboxid').get(0).checked = true;  //For checking

$('#checkboxid').get(0).checked = false; //For unchecking
person prashanth    schedule 10.09.2012

Мы можем использовать elementObject с jQuery для проверки атрибута:

$(objectElement).attr('checked');

Мы можем использовать это для всех версий jQuery без каких-либо ошибок.

Обновление: JQuery 1.6+ имеет новый метод prop, который заменяет attr, например:

$(objectElement).prop('checked');
person Prasanth P    schedule 24.06.2011
comment
Этот ответ устарел, потому что в нем используется .attr вместо .prop. - person Blazemonger; 21.01.2014

Если вы используете PhoneGap для разработки приложений, и у вас есть значение на кнопке, которое вы хотите отобразить мгновенно, не забудьте сделай это

$('span.ui-[controlname]',$('[id]')).text("the value");

Я обнаружил, что без диапазона интерфейс не будет обновляться, что бы вы ни делали.

person Clement Ho    schedule 17.04.2012

Вот код и демонстрация того, как установить несколько флажков ...

http://jsfiddle.net/tamilmani/z8TTt/

$("#check").on("click", function () {

    var chk = document.getElementById('check').checked;
    var arr = document.getElementsByTagName("input");

    if (chk) {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = true;
        }
    } else {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = false;
        }
    }
});
person tamilmani    schedule 16.08.2013
comment
- 1; смешивание селекторов jQuery, таких как $("#check"), с необработанными вызовами DOM API, такими как document.getElementsByTagName("input"), кажется мне неэлегантным, особенно с учетом того, что здесь for циклов можно было бы избежать, используя .prop(). Несмотря на это, это еще один поздний ответ, который не добавляет ничего нового. - person Mark Amery; 15.12.2014

Другое возможное решение:

    var c = $("#checkboxid");
    if (c.is(":checked")) {
         $('#checkboxid').prop('checked', false);
    } else {
         $('#checkboxid').prop('checked', true);
    }
person Muhammad Aamir Ali    schedule 12.10.2013

Как сказал @ livefree75:

jQuery 1.5.x и ниже

Вы также можете расширить объект $ .fn новыми методами:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

Но в новых версиях jQuery мы должны использовать что-то вроде этого:

jQuery 1.6+

    (function($)  {
       $.fn.extend({
          check : function()  {
             return this.filter(":radio, :checkbox").prop("checked", true);
          },
          uncheck : function()  {
             return this.filter(":radio, :checkbox").prop("checked",false);
          }
       });
    }(jQuery));

Тогда вы можете просто сделать:

    $(":checkbox").check();
    $(":checkbox").uncheck();
person Ardalan Shahgholi    schedule 23.09.2016

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

$("#checkbox1").prop('checked', false).checkboxradio("refresh");
person Matt Peacock    schedule 11.01.2013

Для jQuery 1.6+

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

Для jQuery 1.5.x и ниже

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

Проверять,

$('.myCheckbox').removeAttr('checked');
person logan    schedule 21.04.2015

Чтобы проверить и снять отметку

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
person jj2422    schedule 14.11.2013
comment
- 1; это не добавляет никакой ценности уже раздутому потоку. Код здесь точно такой же, как принятый ответ. - person Mark Amery; 15.12.2014

Помните об утечках памяти в Internet Explorer до Internet Explorer 9, поскольку в документации jQuery говорится:

В Internet Explorer до версии 9 использование .prop () для установки свойства элемента DOM на любое другое значение, кроме простого примитивного значения (число, строка или логическое значение), может вызвать утечку памяти, если свойство не удалено (с помощью .removeProp ( )) до того, как элемент DOM будет удален из документа. Чтобы безопасно устанавливать значения для объектов DOM без утечек памяти, используйте .data ().

person naor    schedule 22.05.2013
comment
Это не имеет значения, поскольку во всех (правильных) ответах используется .prop('checked',true). - person Blazemonger; 21.01.2014
comment
Не уверен, что понял ваш комментарий. Он все еще существует в документации jQuery. Вы хотите сказать, что в IE ‹9 нет утечки памяти? - person naor; 22.01.2014
comment
В этом случае утечки памяти нет, поскольку мы устанавливаем простое примитивное значение (Boolean). - person Blazemonger; 22.01.2014

Это, наверное, самое короткое и простое решение:

$(".myCheckBox")[0].checked = true;

or

$(".myCheckBox")[0].checked = false;

Еще короче было бы:

$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;

Вот и jsFiddle.

person Friedrich    schedule 27.05.2014

Обычный JavaScript очень прост и намного меньше накладных расходов:

var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
    elements[i].checked = true;
}

Пример здесь

person Alex W    schedule 18.09.2013
comment
@MarkAmery В принятом ответе не рассматривается, как это сделать без jQuery. Мой ответ добавляет дополнительную пользу к принятому ответу. - person Alex W; 15.12.2014

Я не мог заставить его работать, используя:

$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');

И истина, и ложь установят флажок. Для меня сработало:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking
person fredcrs    schedule 05.01.2012
comment
Разве это не должно быть true и false, а не 'true' и 'false'? - person tpower; 05.01.2012
comment
Это не сработало, потому что 'false' был преобразован в логическое значение, что привело к true - пустая строка оценивается как false, поэтому это сработало. См. эту скрипку, чтобы понять, что я имею в виду. - person Shadow Wizard Wearing Mask V2; 24.06.2012
comment
@ chris97ong Я отменил ваше изменение; когда кто-то говорит Не используйте приведенный ниже код, потому что он не работает, исправление этого кода, оставляя комментарий о том, что он не работает, вредно, особенно когда он нарушает объяснение в комментариях из почему код не работает. Тем не менее, этот ответ все еще несколько запутан и заслуживает отрицательной оценки по причинам, указанным tpower и ShadowWizard. - person Mark Amery; 15.12.2014
comment
используйте значения «истина» и «ложь» для логических значений, не используйте «истина» или «ложь» (строки). - person Jone Polvora; 22.02.2015

Когда вы отметили галочку вроде:

$('.className').attr('checked', 'checked')

этого может быть недостаточно. Вы также должны вызвать функцию ниже;

$('.className').prop('checked', 'true')

Особенно, когда вы убрали атрибут checkbox checked.

person Serhat Koroglu    schedule 05.03.2015

Вот полный ответ с помощью jQuery

Тестирую и работает на 100%: D

    // when the button (select_unit_button) is clicked it returns all the checed checkboxes values 
    $("#select_unit_button").on("click", function(e){

             var arr = [];

             $(':checkbox:checked').each(function(i){
                 arr[i] = $(this).val(); // u can get id or anything else
             });

              //console.log(arr); // u can test it using this in google chrome
    });
person Community    schedule 27.02.2013

Если вы используете ASP.NET MVC, создайте много флажков, а затем установите < em>, чтобы выбрать / отменить выбор всех с помощью JavaScript, вы можете сделать следующее.

HTML

@foreach (var item in Model)
{
    @Html.CheckBox(string.Format("ProductId_{0}", @item.Id), @item.IsSelected)
}

JavaScript

function SelectAll() {       
        $('input[id^="ProductId_"]').each(function () {          
            $(this).prop('checked', true);
        });
    }

    function UnselectAll() {
        $('input[id^="ProductId_"]').each(function () {
            $(this).prop('checked', false);
        });
    }
person DmitryBoyko    schedule 08.07.2014
comment
Зачем здесь нужен каждый? - person tpower; 09.07.2014

В jQuery

if($("#checkboxId").is(':checked')){
    alert("Checked");
}

or

if($("#checkboxId").attr('checked')==true){
    alert("Checked");
}

В JavaScript

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}
person ijarlax    schedule 10.06.2013
comment
Это не ответ на вопрос. - person Samuel Liew♦; 10.06.2013
comment
Этот ответ устарел, потому что в нем используется .attr вместо .prop. - person Blazemonger; 21.01.2014

Это может кому-то помочь.

HTML5

 <input id="check_box" type="checkbox" onclick="handleOnClick()">

JavaScript.

  function handleOnClick(){

      if($("#check_box").prop('checked'))
      {        
          console.log("current state: checked");
      }
      else
      {         
          console.log("current state: unchecked");
      }    
 }
person Sedrick    schedule 29.09.2016

Если вы используете .prop('checked', true|false) и не меняли флажок, вам нужно добавить trigger('click') следующим образом:

// Check
$('#checkboxF1').prop( "checked", true).trigger('click');


// Uncheck
$('#checkboxF1').prop( "checked", false).trigger('click');
person Alex Montoya    schedule 15.09.2018
comment
так рада, что нашла это. благодарю вас! почти сошла с ума !! - person pangyuteng; 08.08.2020

Вы можете попробовать это:

$('input[name="activity[task_state]"]').val("specify the value you want to check ")
person anusha    schedule 23.04.2014

Отредактировано в январе 2019 г.

Вы можете использовать: .prop (propertyName) - < em> добавлена ​​версия: 1.6

p {margin: 20px 0 0;}
b {color: red;}
label {color: red;}
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<input id="check1" type="checkbox" checked="checked">
<label for="check1">Check here</label>
<p></p>
 
<script>
$( "input" ).change(function() {
  var $input = $( this );
  $( "p" ).html(
    "The .attr( \"checked\" ): <b>" + $input.attr( "checked" ) + "</b><br>" +
    "The .prop( \"checked\" ): <b>" + $input.prop( "checked" ) + "</b><br>" +
    "The .is( \":checked\" ): <b>" + $input.is( ":checked" ) + "</b>" );
}).change();
</script>
 
</body>
</html>

На Angular Framework

Пример 1

В вашем .html файле

<input type="checkbox" (change)="toggleEditable($event)">

В вашем TS-файле

toggleEditable(event) {
     if ( event.target.checked ) {
         this.contentEditable = true;
    }
}

Пример 2

В вашем .html файле

<input type="checkbox" [(ngModel)]="isChecked" (change)="checkAction(isChecked ? 'Action1':'Action2')" />
person L Y E S - C H I O U K H    schedule 02.01.2019

Вы можете установить флажок в установленном состоянии, используя JavaScript по-разному. Вы можете увидеть ниже.

  1. Первый способ - $('.myCheckbox').prop('checked', true);

  2. Второй способ - $('.myCheckbox').attr('checked', true);

  3. Третий способ (для проверки условия, если флажок установлен или нет) - $('.myCheckbox').is(':checked')

person Gaurang Sondagar    schedule 01.12.2017

Если вы используете Bootstrap (возможно, неосознанно) ...

$('#myCheckbox').bootstrapToggle('on')
$('#myCheckbox').bootstrapToggle('off')

http://www.bootstraptoggle.com/

person Kenmeister    schedule 14.03.2017

Решение JavaScript также может быть простым и с меньшими накладными расходами:

document.querySelectorAll('.myCheckBox').forEach(x=> x.checked=1)

document.querySelectorAll('.myCheckBox').forEach(x=> x.checked=1)
checked A: <input type="checkbox" class="myCheckBox"><br/>
unchecked: <input type="checkbox"><br/>
checked B: <input type="checkbox" class="myCheckBox"><br/>

person Kamil Kiełczewski    schedule 27.12.2019
comment
Это относится к Установите / снимите флажок с помощью JavaScript (jQuery или Vanilla)? или JavaScript проверять несколько флажков, а не этот вопрос jQuery. - person Heretic Monkey; 28.12.2019

Вы можете сделать это, если у вас есть идентификатор для проверки.

document.getElementById('ElementId').checked = false

И это снять отметку

document.getElementById('ElementId').checked = true

person Omar Odeh    schedule 04.12.2020

В целом:

$("#checkAll").click(function(){
    $(".somecheckBoxes").prop('checked',$(this).prop('checked')?true:false);
});
person eggshot    schedule 13.09.2013

person    schedule
comment
- 1 за ответ, состоящий только из кода, без прямого ответа на вопрос и за то, что не добавлял ничего, чего еще не было в других ответах. - person Mark Amery; 15.12.2014

person    schedule
comment
При ответе желательно дать какое-то объяснение, ПОЧЕМУ ваш ответ является единственным. - person Stephen Rauch; 01.11.2017

person    schedule
comment
Этот ответ устарел, потому что в нем используется .attr вместо .prop. - person Blazemonger; 21.01.2014