Testowanie, czy pole wyboru jest zaznaczone za pomocą jQuery

588

Jeśli pole wyboru jest zaznaczone, muszę tylko uzyskać wartość 1; w przeciwnym razie muszę uzyskać wartość 0. Jak to zrobić za pomocą jQuery?

$("#ans").val() zawsze da mi jedno prawo w tym przypadku:

<input type="checkbox" id="ans" value="1" />
Rajeev
źródło
2
.val () ma uzyskać atrybut wartości, a nie status sprawdzania. Wartość atrybutu może być dowolna, nie musi być wartością logiczną.
Pablo Pazos
jeśli nadal wokół, może chcesz zaktualizować odpowiedź zaakceptowanych do nowoczesnego oprogramowania ... wiele osób wciąż widzę to pytanie
xaxxon

Odpowiedzi:

1008

Użyj, .is(':checked')aby ustalić, czy jest zaznaczone, a następnie odpowiednio ustaw swoją wartość.

Więcej informacji tutaj.

Andy Mikula
źródło
1
Ponadto, gdy wykonasz $ („# id”). Jest („zaznaczone”) w klauzuli if, otrzymasz zwrot true lub false, nie on / off, przez powrót i możesz wysłać go do skryptu zaplecza i rób co chcesz.
Zanoldor
1
Prawdopodobnie obecnie nie ma to znaczenia: ReSharper (tak myślę) wyświetla ostrzeżenie „ Pseudoklasowa„ sprawdzona ”nie jest kompatybilna z Internet Explorerem 8.0 .
Uwe Keim
211
$("#ans").attr('checked') 

powie ci, czy jest zaznaczone. Możesz także użyć drugiego parametru true / false, aby zaznaczyć / odznaczyć pole wyboru.

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

W przypadku komentarza użyj propzamiast, attrgdy jest dostępny. Na przykład:

$("#ans").prop('checked')
xaxxon
źródło
90

Po prostu użyj $(selector).is(':checked')

Zwraca wartość logiczną.

SimionBaws
źródło
56
// use ternary operators
$("#ans").is(':checked') ? 1 : 0;
Stefan Brinkmann
źródło
@Loic, aby ustawić swoją wartość za pomocą skróconej składni trójskładnikowej, np .:: a = ischecked? 1: 0
21

Odpowiedź Stefana Brinkmanna jest doskonała, ale dla początkujących niepełna (pomija przypisanie zmiennej). Aby wyjaśnic:

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

Działa to tak:

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

Przykład:

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

Alerty „nie”

Jeśli jest to pomocne, proszę głosować za odpowiedzią Stefana Brinkmanna.

crashwap
źródło
18

Możesz spróbować:

$('#studentTypeCheck').is(":checked");
MAnoj Sarnaik
źródło
15

Znalazłem już ten sam problem, mam nadzieję, że to rozwiązanie może ci pomóc. najpierw dodaj niestandardowy atrybut do swoich pól wyboru:

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

napisz rozszerzenie jQuery, aby uzyskać wartość:

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

użyj kodu, aby uzyskać wartość pola wyboru:

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

możesz przetestować tutaj

alphakevin
źródło
10
... ponieważ jQuery jest znane jako biblioteka „więcej pisać mniej”
myshadowself
długa historia, do jakiej doszedłeś JQUERY chce, żeby deweloper pisał mniej i robił więcej. prosty problem zasługuje na proste rozwiązanie
ShapCyber
tak, uzgodniono, pisz mniej, rób więcej. piszesz rozszerzenie raz, a przez resztę wywołujesz API $ (someradio) .realVal (), nie musisz pisać rozszerzenia wiele razy.
alphakevin
Nie musiałeś nawet pisać rozszerzenia raz, nigdy nie „wiele razy”! Oo
Coz
8
$('input:checkbox:checked').val();        // get the value from a checked checkbox
nikt
źródło
7
<input type="checkbox" id="ans" value="1" />

Jquery: var test= $("#ans").is(':checked') i zwraca true lub false.

W twojej funkcji:

$test =($request->get ( 'test' )== "true")? '1' : '0';
Rajesh RK
źródło
6

Możesz także użyć:

$("#ans:checked").length == 1;
Fareed Alnamrouti
źródło
4

Posługiwać się:

$("#ans option:selected").val()
Senthil Kumar Bhaskaran
źródło
jeśli nie jest zaznaczony, to pierwsza część nic nie zwróci, prawda?
xaxxon
@Senthil, OP nie prosi o uzyskanie wartości zaznaczonego pola wyboru, a return 1jeśli jest zaznaczone
Om Shankar
4
function chkb(bool){
if(bool)
return 1;
return 0;
}

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

statusNum wyniesie 1, jeśli pole wyboru jest zaznaczone, i 0, jeśli nie jest zaznaczone.

EDYCJA: Możesz również dodać DOM do funkcji.

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

var statusNum=chkb($("#ans"));
kmoney12
źródło
4

Ostatnio natrafiłem na przypadek, w którym potrzebowałem sprawdzić wartość pola wyboru, gdy użytkownik kliknął przycisk. Jedynym właściwym sposobem na to jest użycie prop()atrybutu.

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

to zadziałało w moim przypadku, może ktoś będzie tego potrzebował.

Kiedy próbowałem .attr(':checked')zwrócił, checkedale chciałem wartość logiczną i .val()zwrócił wartość atrybutu value.

Robert
źródło
4

Istnieje kilka opcji, takich jak ...

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

Jeśli wszystkie te opcje zwrócą wartość true, można odpowiednio ustawić wartość.

Amit Maru
źródło
Pierwszy powinien być („: zaznaczony”), inaczej nie działa.
Arie Livshin,
2

Spróbuj tego

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

Tutaj flaga jest prawdą, jeśli zaznaczono inaczej fałsz

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

Znowu to sprawi, że zostaniesz sprawdzony

$('#ans').attr('checked',true);
sharif2008
źródło
2
 $("#id").prop('checked') === true ? 1 : 0;
Paulo Rodrigues
źródło
0

Możesz uzyskać wartość (prawda / fałsz) za pomocą tych dwóch metod

$("input[type='checkbox']").prop("checked");
$("input[type='checkbox']").is(":checked");
PPB
źródło
0

Najpierw sprawdź, czy wartość jest sprawdzana

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

W przeciwnym razie ustaw wartość 0

Ashok Charu
źródło
0

Jeśli chcesz wartość całkowitą sprawdzoną, czy nie, spróbuj:

$("#ans:checked").length
Nasaralla
źródło
0

Możesz to zrobić w ten sposób:

$('input[id=ans]').is(':checked');     
swathi
źródło