जावास्क्रिप्ट, jQuery या वेनिला का उपयोग करके एक चेकबॉक्स को कैसे चेक / अनचेक किया जा सकता है?
जावास्क्रिप्ट, jQuery या वेनिला का उपयोग करके एक चेकबॉक्स को कैसे चेक / अनचेक किया जा सकता है?
जवाबों:
जावास्क्रिप्ट:
// 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/
(क्रोम 46, फ़ायरफ़ॉक्स 41 और IE 11 में फिडेल परीक्षण)
click()
विधिकिसी दिन आप अपने आप को कोड लिख सकते हैं, जो उस घटना पर निर्भर करता है जिसे निकाल दिया जाता है। यह सुनिश्चित करने के लिए कि ईवेंट फायर हो रहा है, click()
चेकबॉक्स तत्व की विधि को इस तरह से कॉल करें:
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
मैं ध्यान देना चाहूंगा, कि 'चेक' किए गए एट्रिब्यूट को नॉन-खाली स्ट्रिंग पर सेट करने से चेक बॉक्स बन जाता है।
इसलिए यदि आप "झूठी" विशेषता को "गलत" पर सेट करते हैं , तो चेकबॉक्स की जाँच की जाएगी। मैं खाली स्ट्रिंग, करने के लिए मान सेट करने के लिए किया था अशक्त या बुलियन मान गलत आदेश सुनिश्चित करें चेकबॉक्स चेक नहीं किया गया था बनाने के लिए।
इसे इस्तेमाल करे:
//Check
document.getElementById('checkbox').setAttribute('checked', 'checked');
//UnCheck
document.getElementById('chk').removeAttribute('checked');
यदि किसी कारण के लिए, आप नहीं करने के लिए एक चलाना चाहते हैं (नहीं कर सकते हैं या) .click()
चेकबॉक्स तत्व पर, तो आप बस अपने मूल्य सीधे अपने .checked संपत्ति (एक के माध्यम से बदल सकते हैं आईडीएल विशेषता के <input type="checkbox">
)।
ध्यान दें कि ऐसा करने से सामान्य रूप से संबंधित घटना ( परिवर्तन) नहीं होती है ) में इसलिए आपको मैन्युअल रूप से आग लगाने की आवश्यकता होगी जो कि किसी भी संबंधित इवेंट हैंडलर के साथ काम करता है।
यहाँ कच्ची जावास्क्रिप्ट (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 का उपयोग किया था, लेकिन इसे आसानी से बनाया जा सकता है या तो किसी दिए गए आईडी को कंस्ट्रक्टर को पास कर दिया जाए, या यह सभी बटन पर लागू हो सकता है जो चेकबॉक्स के लिए एरिया-लेबल के रूप में कार्य करता है (ध्यान दें कि मैं बटन पर एक आईडी सेट करने और चेकबॉक्स को एरिया-लेबेलबी देने से परेशान नहीं हुआ, जो कि इस पद्धति का उपयोग करते समय किया जाना चाहिए) या इसे विस्तारित करने के लिए किसी भी अन्य तरीके की संख्या। अंतिम दो addEventListener
एस केवल यह प्रदर्शित करने के लिए हैं कि यह कैसे काम करता है।
एकल जाँच के लिए प्रयास करें
बहु कोशिश के लिए
मैं वर्तमान उत्तरों से सहमत हूं, लेकिन मेरे मामले में यह काम नहीं करता है, मुझे उम्मीद है कि यह कोड भविष्य में किसी की मदद करेगा:
// check
$('#checkbox_id').click()