Я хочу проверить, не сняли ли флажок, когда пользователь нажимает на него. Причина этого в том, что я хочу выполнить проверку, когда пользователь снимает флажок. Потому что нужно поставить хотя бы один флажок. Так что если он снимет отметку с последней, то она снова автоматически проверит себя.
С jQuery я могу легко узнать, проверено ли оно или нет:
$('#check1').click(function() {
if($(this).is(':checked'))
alert('checked');
else
alert('unchecked');
});
Но на самом деле я хочу иметь только оператор if, который проверяет, был ли только что снят флажок.
Я подумал, что смогу сделать это с помощью следующего кода:
$('#check2').click(function() {
if($(this).not(':checked'))
alert('unchecked');
else
alert('checked');
});
Но при этом всегда будет отображаться сообщение «не отмечен». Не совсем то, что я ожидал ...
демо: http://jsfiddle.net/tVM5H/
В конце концов мне нужно что-то вроде:
$('#check2').click(function() {
if($(this).not(':checked')) {
// Got unchecked, so something!!!
}
});
Но очевидно, что это не работает. Я скорее не хочу использовать первый пример, потому что тогда у меня будет ненужный оператор else, когда мне понадобится только один оператор if.
Итак, во-первых, это ошибка jQuery? Потому что для меня это неожиданное поведение. И во-вторых, у кого-нибудь есть идеи для хорошей альтернативы?
jQuery для проверки проверено? В самом деле?
if(!this.checked) {
Не используйте базуку для работы с бритвой.
источник
$(this)[0].checked
.checked
там, где они есть.is('checked')
, само по себе не сработает.$(document).ready(function() { $("#check1").click(function() { var checked = $(this).is(':checked'); if (checked) { alert('checked'); } else { alert('unchecked'); } }); });
источник
<script type="text/javascript"> if(jQuery('input[id=input_id]').is(':checked')){ // Your Statment }else{ // Your Statment } OR if(jQuery('input[name=input_name]').is(':checked')){ // Your Statment }else{ // Your Statment } </script>
Код взят отсюда: http://chandreshrana.blogspot.in/2015/10/how-to-check-if-checkbox-is-checked-or.html
источник
Ознакомьтесь с некоторыми ответами на этот вопрос - я думаю, он может относиться к вашему:
как запустить функцию щелчка после поведения элемента по умолчанию
Я думаю, вы столкнулись с несогласованностью в реализации
onclick
функции в браузере . Некоторые предпочитают переключать флажок перед запуском события, а некоторые - после.источник
Ответ уже опубликован. Но мы также можем использовать jquery таким образом
демо
$(function(){ $('#check1').click(function() { if($('#check1').attr('checked')) alert('checked'); else alert('unchecked'); }); $('#check2').click(function() { if(!$('#check2').attr('checked')) alert('unchecked'); else alert('checked'); }); });
источник
Делай это так
if (typeof $(this).attr("checked") == "undefined" ) // To check if checkbox is checked if( $(this).attr("checked")=="checked")
источник
this.checked
. Первая строка там не нужнаtypeof
(она никогда не поднимет aReferencError
). Вы также должны использоватьprop()
вместоattr()
, который вернет логическое значение, что сделает ваш второй также избыточным.