Тестування, чи встановлено прапорець за допомогою 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.