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" />

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.


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')


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

@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.



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


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

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


4

Posługiwać się:

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

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

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.


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ść.


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


0

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

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

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


0

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

$("#ans:checked").length

0

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

$('input[id=ans]').is(':checked');     
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.