Тестирование, если флажок установлен с помощью jQuery

503

Если флажок установлен, тогда мне нужно только получить значение как 1; в противном случае мне нужно получить его как 0. Как это сделать с помощью jQuery?

$("#ans").val() всегда даст мне право в этом случае:

<input type="checkbox" id="ans" value="1" />
  • 2
    .val () должен получить атрибут значения, а не статус проверки. Атрибут value может быть любым, он не должен быть логическим.
  • 0
    если вы все еще здесь, вы можете обновить принятый ответ для современного программного обеспечения ... многие люди все еще видят этот вопрос
Показать ещё 1 комментарий
Теги:
checkbox
jquery-selectors

17 ответов

891
Лучший ответ

Используйте .is(':checked'), чтобы определить, проверено ли оно, и затем установите соответствующее значение.

Дополнительная информация здесь

  • 1
    Кроме того, когда вы делаете $ ("# id"). Is ("флажок") в предложении if, вы получите true или false, а не вкл / выкл, вернувшись, и вы можете отправить его в свой внутренний скрипт и делай что хочешь.
  • 1
    Вероятно, в настоящее время это не имеет значения: ReSharper (я полагаю) выдает предупреждение « Псевдокласс« флажок »не совместим с Internet Explorer 8.0 ».
197
$("#ans").attr('checked') 

сообщит, проверен ли он. Вы также можете использовать второй параметр true/false для проверки/снятия флажка.

$("#ans").attr('checked', true);

Для комментариев используйте prop вместо attr, когда это доступно. Например:

$("#ans").prop('checked')
  • 12
    .prop () для библиотеки jQuery 1.6+; работает отлично! Спасибо
79

Просто используйте $(selector).is(':checked')

Возвращает логическое значение.

53
// use ternary operators
$("#ans").is(':checked') ? 1 : 0;
  • 7
    Зачем? is (': флажок') уже возвращает логическое значение
  • 0
    @Loic, чтобы установить его значение, используя краткий троичный синтаксис, например:: a = ischecked? 1: 0
18

Ответ Стефана Бринкмана превосходный, но неполный для новичков (опускает назначение переменной). Просто уточнить:

// this structure is called a ternary operator
var cbAns = ( $("#ans").is(':checked') ) ? 1 : 0;

Он работает следующим образом:

 var myVar = ( if test goes here ) ? 'ans if yes' : 'ans if no' ;

Пример:

var myMath = ( 1 > 2 ) ? 'yes' : 'no' ;
alert( myMath );

Оповещения "нет"

Если это полезно, пожалуйста, подтвердите ответ Стефана Бринкмана.

16

Вы можете попробовать следующее:

$('#studentTypeCheck').is(":checked");
15

Я нашел ту же проблему раньше, надеюсь, что это решение может вам помочь. во-первых, добавьте пользовательский атрибут в свои флажки:

<input type="checkbox" id="ans" value="1" data-unchecked="0" />

напишите расширение jQuery для получения значения:

$.fn.realVal = function(){
    var $obj = $(this);
    var val = $obj.val();
    var type = $obj.attr('type');
    if (type && type==='checkbox') {
        var un_val = $obj.attr('data-unchecked');
        if (typeof un_val==='undefined') un_val = '';
        return $obj.prop('checked') ? val : un_val;
    } else {
        return val;
    }
};

используйте код, чтобы получить значение check-box:

$('#ans').realVal();

вы можете протестировать здесь

  • 9
    ... потому что jQuery известен как библиотека "пиши больше делай меньше"
  • 0
    Длинная история, которую вы прошли, JQUERY хочет, чтобы разработчик писал меньше и делал больше. простая проблема заслуживает простого решения
Показать ещё 2 комментария
7
$('input:checkbox:checked').val();        // get the value from a checked checkbox
6
<input type="checkbox" id="ans" value="1" />

JQuery: var test= $("#ans").is(':checked') и он возвращает true или false.

В вашей функции:

$test =($request->get ( 'test' )== "true")? '1' : '0';
6

Вы также можете использовать:

$("#ans:checked").length == 1;
4
function chkb(bool){
if(bool)
return 1;
return 0;
}

var statusNum=chkb($("#ans").is(':checked'));

statusNum будет равен 1, если флажок установлен, а 0, если это не так.

EDIT: вы также можете добавить DOM к функции.

function chkb(el){
if(el.is(':checked'))
return 1;
return 0;
}

var statusNum=chkb($("#ans"));
4

Использование:

$("#ans option:selected").val()
  • 0
    если он не выбран, то первая часть ничего не вернет, верно?
  • 0
    @Senthil, OP не запрашивает значение выбранного флажка, return 1 если он выбран
3

Есть несколько вариантов, например....

 1. $("#ans").is(':checked') 
 2. $("#ans:checked")
 3. $('input:checkbox:checked'); 

Если все эти опции возвращают true, вы можете установить значение accourdingly.

  • 0
    Первый должен быть (': флажок'), иначе не работает.
2

Недавно я просмотрел случай, когда мне нужно проверить значение флажка, когда пользователь нажал кнопку. Единственный правильный способ сделать это - использовать атрибут prop().

var ansValue = $("#ans").prop('checked') ? $("#ans").val() : 0;

это сработало в моем случае, может быть, кому-то это понадобится.

Когда я пробовал .attr(':checked'), он возвращал checked, но мне нужно логическое значение и .val() возвращаемое значение атрибута value.

1

попробуйте это

$('input:checkbox:checked').click(function(){
    var val=(this).val(); // it will get value from checked checkbox;
})

Здесь флаг имеет значение true, если отмечено иначе false

var flag=$('#ans').Attr('checked');

Снова это сделает cheked

$('#ans').Attr('checked',true);
0

Если вы хотите, чтобы целое значение проверялось или не пыталось:

$( "# анс: проверено" ). Длина

0

Вы можете получить значение (true/false) этими двумя способами

$("input[type='checkbox']").prop("checked");
$("input[type='checkbox']").is(":checked");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню