回答:
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
:-\
まだ言及されていない重要な動作:
プログラムでchecked属性を設定してchange
も、チェックボックスのイベントは発生しません。
このフィドルで自分の目で確かめてください:http :
//jsfiddle.net/fjaeger/L9z9t04p/4/
(フィドルはChrome 46、Firefox 41、IE 11でテスト済み)
click()
方法いつか、発生するイベントに依存するコードを記述していることに気付くかもしれません。イベントが発生することを確認するにはclick()
、次のように、checkbox要素のメソッドを呼び出します。
document.getElementById('checkbox').click();
しかし、これではなく、具体的にそれを設定するので、チェックボックスのチェックを状態を切り替えますtrue
かfalse
。このchange
イベントは、checked属性が実際に変更されたときにのみ発生することに注意してください。
また、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'属性を空でない文字列に設定すると、チェックボックスが表示されることに注意してください。
したがって、 'checked'属性を"false"に設定すると、チェックボックスがオンになります。チェックボックスがチェックされていないことを確認するために、値を空の文字列、null、またはブール値falseに設定する必要がありました。
これを試して:
//Check
document.getElementById('checkbox').setAttribute('checked', 'checked');
//UnCheck
document.getElementById('chk').removeAttribute('checked');
何らかの理由で.click()
、checkbox要素に対してを実行したくない(または実行できない)場合は、その.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を使用したことに注意してください。これは、特定のIDをコンストラクターに渡すか、チェックボックスのaria-labelsとして機能するすべてのボタンに適用できるように簡単に構築できます(注意:ボタンにIDを設定したり、チェックボックスにaria-labelledbyを指定したりする必要はありませんでした。これは、このメソッドを使用する場合に実行する必要があります)、またはこれを拡張する他のいくつかの方法です。最後の2つaddEventListener
は、それがどのように機能するかをデモするためのものです。
シングルチェックの場合
マルチトライ用