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


588

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

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

<input type="checkbox" id="ans" value="1" />

2
.val () - получить атрибут значения, а не статус проверки. Атрибут value может быть любым, он не должен быть логическим.
— Пабло Пасос

если вы все еще здесь, вы можете обновить принятый ответ для современного программного обеспечения ... многие люди все еще видят этот вопрос
— xaxxon

Ответы:


1008

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

Больше информации здесь.


1
Кроме того, когда вы делаете $ ("# id"). Is ("флажок") в условии if, вы получите true или false, а не вкл / выкл, по возвращении, и вы можете отправить его в свой внутренний скрипт и делай что хочешь.
— Занольдор

1
Вероятно, это не имеет значения в настоящее время: ReSharper (я полагаю) выводит предупреждение « Псевдокласс« флажок »не совместим с Internet Explorer 8.0 ».
— Уве Кейм

211
$("#ans").attr('checked') 

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

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

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

$("#ans").prop('checked')

90

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

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


56
// use ternary operators
$("#ans").is(':checked') ? 1 : 0;

@Loic, чтобы установить его значение, используя краткий троичный синтаксис, например:: a = ischecked? 1: 0

21

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

// 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 );

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

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



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;
    }
};

используйте код для получения значения флажка:

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

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


10
... потому что jQuery известен как библиотека "пиши больше делай меньше"
— myshadowself

Длинная история, которую вы прошли, JQUERY хочет, чтобы разработчик меньше писал и делал больше. простая проблема заслуживает простого решения
— ShapCyber

да, договорились, пиши меньше, делай больше. вы пишете расширение один раз, а в остальное время вы вызываете только API $ (someradio) .realVal (), вам не нужно писать расширение много раз.
— alphakevin

Вам даже не нужно было писать расширение один раз, не говоря уже о «много раз»! Oo
— Coz


7
<input type="checkbox" id="ans" value="1" />

Jquery: var test= $("#ans").is(':checked') и он возвращает истину или ложь.

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

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



4
function chkb(bool){
if(bool)
return 1;
return 0;
}

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

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

РЕДАКТИРОВАТЬ: Вы также можете добавить DOM к функции.

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

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

4

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

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

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

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


4

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

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

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


Первый должен быть (': флажок'), иначе не работает.
— Арье Лившин

2

Попробуй это

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

Здесь флаг равен true, если установлен флажок, иначе

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

Опять это сделает чекед

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


0

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

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

0

Сначала проверьте значение проверено

$("#ans").find("checkbox").each(function(){
    if ($(this).prop('checked')==true){ 
    var id = $(this).val()
    }
});

В противном случае установите значение 0


0

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

$("#ans:checked").length

0

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

$('input[id=ans]').is(':checked');     
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.