Как установить или снять флажок с помощью JavaScript, jQuery или vanilla?
Как установить или снять флажок с помощью JavaScript, jQuery или vanilla?
Ответы:
Javascript:
// Check
document.getElementById("checkbox").checked = true;
// Uncheck
document.getElementById("checkbox").checked = false;
jQuery (1.6+):
// Check
$("#checkbox").prop("checked", true);
// Uncheck
$("#checkbox").prop("checked", false);
JQuery (1,5-):
// Check
$("#checkbox").attr("checked", true);
// Uncheck
$("#checkbox").attr("checked", false);
attr
или prop
?
.checked = true/false
, не вызывает change
событие: - \
Важное поведение, которое еще не было упомянуто:
Программно устанавливая отмеченный атрибут, не срабатывает change
событие флажка .
Убедитесь сами в этой скрипке:
http://jsfiddle.net/fjaeger/L9z9t04p/4/
(Fiddle протестирован в Chrome 46, Firefox 41 и IE 11)
click()
методОднажды вы можете написать код, который зависит от события, которое запускается. Чтобы убедиться, что событие происходит, вызовите click()
метод элемента checkbox, например так:
document.getElementById('checkbox').click();
Однако это переключает проверенный статус флажка вместо того, чтобы специально установить его в true
или false
. Помните, что change
событие должно срабатывать только тогда, когда проверяемый атрибут действительно изменяется.
Это также относится к способу jQuery: установка атрибута с помощью prop
или attr
не вызывает change
событие.
checked
определенного значенияВы можете проверить checked
атрибут перед вызовом click()
метода. Пример:
function toggle(checked) {
var elm = document.getElementById('checkbox');
if (checked != elm.checked) {
elm.click();
}
}
Узнайте больше о методе щелчка здесь:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
elm.dispatchEvent(new Event('change'));
проверить:
document.getElementById("id-of-checkbox").checked = true;
снять галочку:
document.getElementById("id-of-checkbox").checked = false;
Мы можем установить флажок частиц, как,
$('id of the checkbox')[0].checked = true
и снимите флажок,
$('id of the checkbox')[0].checked = false
Я хотел бы отметить, что установка атрибута «checked» в непустую строку приводит к появлению флажка.
Таким образом, если вы установите атрибут «флажок» на «ложь» , флажок будет установлен. Мне пришлось установить значение на пустую строку, null или логическое значение false , чтобы убедиться, что флажок не установлен.
Попробуй это:
//Check
document.getElementById('checkbox').setAttribute('checked', 'checked');
//UnCheck
document.getElementById('chk').removeAttribute('checked');
Если по какой - то причине, вы не хотите (или не может) запустить .click()
на флажке элемента, вы можете просто изменить его значение непосредственно через его .Checked свойства ( атрибута IDL в <input type="checkbox">
).
Обратите внимание, что при этом не запускается обычно связанное событие ( изменение ), поэтому вам нужно вручную запустить его, чтобы получить полное решение, которое работает со всеми связанными обработчиками событий.
Вот функциональный пример в необработанном javascript (ES6):
class ButtonCheck {
constructor() {
let ourCheckBox = null;
this.ourCheckBox = document.querySelector('#checkboxID');
let checkBoxButton = null;
this.checkBoxButton = document.querySelector('#checkboxID+button[aria-label="checkboxID"]');
let checkEvent = new Event('change');
this.checkBoxButton.addEventListener('click', function() {
let checkBox = this.ourCheckBox;
//toggle the checkbox: invert its state!
checkBox.checked = !checkBox.checked;
//let other things know the checkbox changed
checkBox.dispatchEvent(checkEvent);
}.bind(this), true);
this.eventHandler = function(e) {
document.querySelector('.checkboxfeedback').insertAdjacentHTML('beforeend', '<br />Event occurred on checkbox! Type: ' + e.type + ' checkbox state now: ' + this.ourCheckBox.checked);
}
//demonstration: we will see change events regardless of whether the checkbox is clicked or the button
this.ourCheckBox.addEventListener('change', function(e) {
this.eventHandler(e);
}.bind(this), true);
//demonstration: if we bind a click handler only to the checkbox, we only see clicks from the checkbox
this.ourCheckBox.addEventListener('click', function(e) {
this.eventHandler(e);
}.bind(this), true);
}
}
var init = function() {
const checkIt = new ButtonCheck();
}
if (document.readyState != 'loading') {
init;
} else {
document.addEventListener('DOMContentLoaded', init);
}
<input type="checkbox" id="checkboxID" />
<button aria-label="checkboxID">Change the checkbox!</button>
<div class="checkboxfeedback">No changes yet!</div>
Если вы запустите это и нажмете оба флажка и кнопку, вы должны понять, как это работает.
Обратите внимание, что я использовал document.querySelector для краткости / простоты, но его можно легко создать, чтобы либо передать заданный идентификатор конструктору, либо применить его ко всем кнопкам, которые действуют как метки aria для флажка (обратите внимание, что я не удосужился установить идентификатор на кнопке и присвоить флажок aria-labelledby, что должно быть сделано при использовании этого метода) или каким-либо другим способом расширить это. Последние два addEventListener
просто продемонстрировать, как это работает.
Для однократной проверки попробуйте
для нескольких попыток
Я согласен с текущими ответами, но в моем случае это не работает, я надеюсь, что этот код поможет кому-то в будущем:
// check
$('#checkbox_id').click()