Как проверить, установлен ли флажок в jQuery?
Мне нужно проверить checked
свойство флажка и выполнить действие, основанное на проверенном свойстве, используя jQuery.
Например, если флажок возраста установлен, то мне нужно показать текстовое поле для ввода возраста, иначе скрыть текстовое поле.
Но следующий код возвращает false
по умолчанию:
if ($('#isAgeSelected').attr('checked'))
{
$("#txtAge").show();
}
else
{
$("#txtAge").hide();
}
Как мне успешно запросить checked
имущество?
70 ответов
Переключить: 0/1 или еще
<input type="checkbox" id="nolunch" />
<input id="checklunch />"
$('#nolunch').change(function () {
if ($(this).is(':checked')) {
$('#checklunch').val('1');
};
if ($(this).is(':checked') == false) {
$('#checklunch').val('0');
};
});
Пожалуйста, попробуйте ниже код, чтобы проверить флажок установлен или нет
$(document).ready(function(){
$("#isAgeSelected").on('change',function(){
if($("#isAgeSelected").is(':checked'))
$("#txtAge").show(); // checked
else{
$("#txtAge").hide(); // unchecked
}
});
});
Я думаю, что это будет простой
$('#isAgeSelected').change(function() {
if($(this).is(":checked")) {
$('#txtAge').show();
}
else{
$('#txtAge').hide();
}
});
Я уверен, что это не какое-то откровение, но я не видел всего этого в одном примере:
Селектор для всех отмеченных флажков (на странице):
$('input[type=checkbox]:checked')
Я проверил в Firefox 9.0.1, что для определения состояния изменения после флажка работает следующее:
$("#mycheckbox").change(function() {
var value = $(this).prop("checked") ? 'true' : 'false';
alert(value);
});
Включите jQuery из локальной файловой системы. Я использовал CDN от Google, и есть также много CDN на выбор.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Код будет выполнен, как только флажок внутри mycheck
класс нажал. Если установлен текущий флажок, он отключит все остальные и активирует текущий. Если текущий не отмечен, он снова включит все флажки для перепроверки.
<script type="text/javascript">
$(document).ready(function() {
var checkbox_selector = '.mycheck input[type=checkbox]';
$(checkbox_selector).click(function() {
if ($($(this)).is(':checked')) {
// Disable all checkboxes
$(checkbox_selector).attr('disabled', 'disabled');
// Enable current one
$($(this)).removeAttr('disabled');
}
else {
// If unchecked open all checkbox
$(checkbox_selector).removeAttr('disabled');
}
});
});
</script>
Простая форма для тестирования
<form method="post" action="">
<div class="mycheck">
<input type="checkbox" value="1" /> Television
<input type="checkbox" value="2" /> Computer
<input type="checkbox" value="3" /> Laptop
<input type="checkbox" value="4" /> Camera
<input type="checkbox" value="5" /> Music Systems
</div>
</form>
Экран вывода:
if($("#checkkBoxId").is(':checked')){
alert("Checked=true");
}
или же
if($("#checkkBoxId").attr('checked') == true){
alert("checked=true");
}
checked
атрибут input type="checkbox"
сопоставляется с defaultChecked
собственности, а не с checked
имущество.
Поэтому, когда вы делаете что-то на странице, когда флажок не установлен, используйте prop()
метод вместо. Он выбирает значение свойства и изменяется по мере изменения состояния флажка.
С помощью attr(
) или же getAttribute
(в чистом JavaScript) в этих случаях неправильный способ ведения дел.
если elem
это флажок, а затем сделать что-то вроде этого, чтобы получить значение:
elem.checked
или же
$(elem).prop('checked')
$(document).on("click","#isAgeSelected",function(){
if($(this).prop("checked") == true){
$("#txtAge").show();
}
else if($(this).prop("checked") == false){
$("#txtAge").hide();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">
<input type="text" name="age" placeholder="Please enter age" />
</div>
автоматизированный
$(document).ready(function()
{
$('#isAgeSelected').change(function()
{
alert( 'value =' + $('#chkSelect').attr('checked') );
});
});
HTML
<b> <input type="isAgeSelected" id="chkSelect" /> Age Check </b>
<br/><br/>
<input type="button" id="btnCheck" value="check" />
JQuery
$(document).ready(function()
{
$('#btnCheck').click(function()
{
var isChecked = $('#isAgeSelected').attr('checked');
if (isChecked == 'checked')
alert('check-box is checked');
else
alert('check-box is not checked');
})
});
Ajax
function check()
{
if (isAgeSelected())
alert('check-box is checked');
else
alert('check-box is not checked');
}
function isAgeSelected()
{
return ($get("isAgeSelected").checked == true);
}
Это минимальное количество кода, я думаю, мне нужно было сделать что-то подобное эффективно. Я нашел этот метод полезным; он возвращает массив флажков, которые отмечены, и затем вы можете использовать их значение (это решение использует jQuery):
// This is how you get them
var output = "";
var checkedBoxes = $("DivCheckBoxesAreIn").children("input:checked");
if(checkedBoxes.length <= 0) {
alert('Please select check boxes');
return false;
};
// And this is how you use them:
checkedBoxes.each(function() {
output += this.value + ", ";
};
Вывод "output" выдаст вам список значений, разделенных запятыми.
Используя чистый JavaScript:
let checkbox = document.getElementById('checkboxID');
if(checkbox.checked) {
alert('is checked');
} else {
alert('not checked yet');
}
Просто используйте его, как показано ниже
$('#isAgeSelected').change(function() {
if ($(this).is(":checked")) { // or if($("#isAgeSelected").attr('checked') == true){
$('#txtAge').show();
} else {
$('#txtAge').hide();
}
});
У меня возникла та же проблема, и ни одно из опубликованных решений, похоже, не сработало, а затем я обнаружил, что это потому, что ASP.NET отображает элемент управления CheckBox как SPAN с INPUT внутри, поэтому идентификатор CheckBox на самом деле является идентификатором SPAN, а не INPUT, поэтому вы должны использовать:
$('#isAgeSelected input')
скорее, чем
$('#isAgeSelected')
и тогда все методы, перечисленные выше, должны работать.
Вот пример, который включает инициализацию show /hide, чтобы соответствовать состоянию флажка при загрузке страницы; принимая во внимание тот факт, что Firefox запоминает состояние флажков при обновлении страницы, но не запоминает состояние показанных / скрытых элементов.
$(function() {
// initialise visibility when page is loaded
$('tr.invoiceItemRow').toggle($('#showInvoiceItems').attr('checked'));
// attach click handler to checkbox
$('#showInvoiceItems').click(function(){ $('tr.invoiceItemRow').toggle(this.checked);})
});
(с помощью других ответов на этот вопрос)
Это был мой обходной путь:
$('#vcGoButton').click(function () {
var buttonStatus = $('#vcChangeLocation').prop('checked');
console.log("Status is " + buttonStatus);
if (buttonStatus) {
var address = $('#vcNewLocation').val();
var cabNumber = $('#vcVehicleNumber').val();
$.get('postCabLocation.php',
{address: address, cabNumber: cabNumber},
function(data) {
console.log("Changed vehicle " + cabNumber + " location to " + address );
});
}
else {
console.log("VC go button clicked, but no location action");
}
});
Сеттер:
$("#chkmyElement")[0].checked = true;
Getter:
if($("#chkmyElement")[0].checked) {
alert("enabled");
} else {
alert("disabled");
}
Метод jQuery prop() предоставляет простой, эффективный и надежный способ отслеживать текущий статус флажка. Он работает очень хорошо во всех условиях, потому что каждый флажок имеет свойство checked, которое указывает его статус отмечен или не отмечен .
Не поймите неправильно с отмеченным атрибутом. Атрибут checked определяет только начальное состояние флажка, но не текущее состояние. Посмотрим, как это работает:
<script>
$(document).ready(function(){
$('input[type="checkbox"]').click(function(){
if($(this).prop("checked") == true){
console.log("Checkbox is checked.");
}
else if($(this).prop("checked") == false){
console.log("Checkbox is unchecked.");
}
});
});
</script>
Для подробного объяснения: jQuery prop()
Однако вы также можете использовать функцию is() jQuery.
if($("#isAgeSelected").is(':checked'))
$("#txtAge").show(); // Age is selected - Show the Age
else
$("#txtAge").hide(); // Age is not selected - Hide the Age
Использование:
$(this).toggle($("input:checkbox", $(this))[0].checked);
Когда вы выбираете вне контекста, помните, что вам нужно [0], чтобы получить доступ к флажку.
Я использую jQuery 1.11.1, и у меня были проблемы с установкой и чтением значения флажка.
Я наконец решил это с помощью этих двух функций:
function setCheckboxValue(checkBoxId, checked) {
if (checkBoxId && (checked === true || checked === false)) {
var elem = $('#' + checkBoxId);
if (checked === true) {
elem.attr('checked', 'checked');
} else {
elem.removeAttr('checked');
}
}
}
function isChecked(checkBoxId) {
return $('#' + checkBoxId).attr('checked') != null;
}
Он может выглядеть немного грязным, но он решает все проблемы с проводной связью, которые у меня возникали в разных типах браузеров.
Попробуй это,
$('#isAgeSelected').click(function() {
if(this.checked){
$("#txtAge").show();
} else{
$("#txtAge").hide();
}
});
Я бы на самом деле предпочел change
событие.
$('#isAgeSelected').change(function() {
$("#txtAge").toggle(this.checked);
});
Селектор возвращает несколько объектов, и он должен взять первый элемент в массиве:
// Collection
var chckremember = $("#chckremember");
// Result boolen
var ischecked=chckremember[0].checked;
Вы можете попробовать этот код:
$('#isAgeSelected').click(function(){
console.log(this.checked);
if(this.checked == true) {
$("#txtAge").show();
} else {
$("#txtAge").hide();
}
});
if( undefined == $('#isAgeSelected').attr('checked') ) {
$("#txtAge").hide();
} else {
$("#txtAge").show();
}
$(document).on('change', '#isAgeSelected', function() {
if($(this).is(":checked")){
$('#txtAge').hide();
}
else
{
$('#txtAge').hide();
}
});
Привет, ты можешь использовать простой Javascript
, вот так:
document.getElementById('checkboxOption').addEventListener('click',
event => console.log(event.target.checked)
);
<label><input type="checkbox" id="checkboxOption">Check Option</label>
В чистом состоянии JS флажок легче читать
isAgeSelected.checked
function check() {
txtAge.style.display= isAgeSelected.checked ? 'block':'none';
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Age <input type="checkbox" id="isAgeSelected"/>
<button onclick="check()">Check</button>
<div id="txtAge" style="display:none">
Age is selected
</div>
Мне нужно проверить проверенное свойство флажка и выполнить действие на основе проверенного свойства с помощью jQuery.
EX -
1) Запустите при загрузке, чтобы получить значение флажка, если флажок возраста установлен, тогда мне нужно показать текстовое поле для ввода возраста, иначе скрыть текстовое поле.
2) если флажок возраста установлен, то мне нужно показать текстовое поле для ввода возраста, иначе скрыть текстовое поле, используя событие щелчка флажка.
поэтому код не возвращает false по умолчанию:
Попробуйте следующее:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<h1>Jquery Demo</h1>
<input type="checkbox" name="isAge" checked id="isAge"> isAge <br/>
<div id="Age" style="display:none">
<label>Enter your age</label>
<input type="number" name="age">
</div>
<script type="text/javascript">
if(document.getElementById('isAge').checked) {
$('#Age').show();
} else {
$('#Age').hide();
}
$('#isAge').click(function() {
if(document.getElementById('isAge').checked) {
$('#Age').show();
} else {
$('#Age').hide();
}
});
</script>
</body>
</html>
Вот измененная версия: https://jsfiddle.net/sedhal/0hygLtrz/7/
Как насчет этого решения?
$("#txtAge")[
$("#isAgeSelected").is(':checked') ?
'show' :
'hide'
]();