Тестування, чи встановлено прапорець за допомогою jQuery


588

Якщо прапорець встановлений, тоді мені потрібно отримати лише значення 1; в іншому випадку мені потрібно отримати це як 0. Як це зробити за допомогою jQuery?

$("#ans").val() завжди дасть мені одне право в цьому випадку:

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

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

якщо ви все ще знаходитесь поруч, можливо, ви захочете оновити прийняту відповідь на сучасне програмне забезпечення ... багато людей все ще бачать це питання
xaxxon

Відповіді:


1008

Використовуйте, .is(':checked')щоб визначити, перевірено це чи ні, а потім встановіть відповідне значення.

Більше інформації тут.


1
Крім того, якщо ви зробите $ ("# id"). Is ("перевірено") в пункті if, ви отримаєте true або false, не повернути / вимкнути, повернутися, і ви можете надіслати його до свого бек-сценарію і робіть все, що завгодно.
Занольдор

1
Напевно, це не має значення сьогодні: ReSharper (я думаю) видає попередження " Псевдоклас" перевірено "не сумісний з Internet Explorer 8.0 ".
Uwe Keim

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 = позначено? 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 (), розширення не потрібно писати багато разів.
альфакевін

Вам навіть не потрібно було писати розширення один раз, ніколи не пам’ятайте «багато разів»! Oo
Coz


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

Jquery: var test= $("#ans").is(':checked') і воно повертає істинне або хибне.

У вашій функції:

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


4

Використання:

$("#ans option:selected").val()

якщо вона не вибрана, то перша частина нічого не поверне, правда?
xaxxon

@Senthil, OP не просить отримати значення вибраного прапорця, скоріше, return 1якщо воно буде вибране
Om Shankar

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

Нещодавно я пережив випадок, коли мені потрібно було встановити прапорець, коли користувач натискав кнопку. Єдиний правильний спосіб зробити це - використовувати 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'); 

Якщо всі ці параметри повертаються як істинні, то ви можете встановити значення з часом.


Перший має бути (": перевірено"), не працює інакше.
Арі Лівшин

2

Спробуйте це

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

Тут прапор є істинним, якщо позначено інакше, помилковим

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

Знову ж таки, це зробить обманом

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


0

За допомогою цих двох методів ви можете отримати значення (справжнє / хибне)

$("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.