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

588

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

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

<input type="checkbox" id="ans" value="1" />
Раджив
источник
2
.val () - получить атрибут значения, а не статус проверки. Атрибут value может быть любым, он не должен быть логическим.
Пабло Пасос
если вы все еще здесь, вы можете обновить принятый ответ для современного программного обеспечения ... многие люди все еще видят этот вопрос
xaxxon
Возможный дубликат Как проверить, установлен ли флажок в jQuery?
Лоран С.

Ответы:

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')
xaxxon
источник
90

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

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

SimionBaws
источник
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 );

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

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

crashwap
источник
18

Вы можете попробовать это:

$('#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;
    }
};

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

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

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

alphakevin
источник
10
... потому что jQuery известен как библиотека "пиши больше делай меньше"
myshadowself
Длинная история, которую вы прошли, JQUERY хочет, чтобы разработчик меньше писал и делал больше. простая проблема заслуживает простого решения
ShapCyber
да, договорились, пиши меньше, делай больше. вы пишете расширение один раз, а в остальное время вы вызываете только API $ (someradio) .realVal (), вам не нужно писать расширение много раз.
alphakevin
Вам даже не нужно было писать расширение один раз, не говоря уже о «много раз»! Oo
Coz
8
$('input:checkbox:checked').val();        // get the value from a checked checkbox
никто
источник
7
<input type="checkbox" id="ans" value="1" />

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

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

$test =($request->get ( 'test' )== "true")? '1' : '0';
Раджеш РК
источник
6

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

$("#ans:checked").length == 1;
Фарид Алнамрути
источник
4

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

$("#ans option:selected").val()
Сентил Кумар Бхаскаран
источник
если он не выбран, то первая часть ничего не вернет, верно?
xaxxon
@Senthil, OP не запрашивает значение выбранного флажка, скорее, return 1если он выбран
Ом Шанкар
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"));
kmoney12
источник
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);
sharif2008
источник
2
 $("#id").prop('checked') === true ? 1 : 0;
Пауло Родригес
источник
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
Nasaralla
источник
0

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

$('input[id=ans]').is(':checked');     
Swathi
источник