Verifica se una casella è selezionata con jQuery


588

Se la casella è selezionata, allora ho solo bisogno di ottenere il valore come 1; in caso contrario, devo ottenerlo come 0. Come posso fare usando jQuery?

$("#ans").val() mi darà sempre un diritto in questo caso:

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

2
.val () serve per ottenere l'attributo value, non lo stato check. L'attributo value può essere qualsiasi cosa, non deve essere booleano.
Pablo Pazos,

se sei ancora in giro, potresti voler aggiornare la risposta accettata per il software moderno ... molte persone continuano a vedere questa domanda
xaxxon

Risposte:


1008

Utilizzare .is(':checked')per determinare se è selezionato o meno, quindi impostare il valore di conseguenza.

Maggiori informazioni qui


1
Inoltre, quando fai $ ("# id"). Is ("controllato") in una clausola if otterrai true o false, non on / off, di ritorno e puoi inviarlo al tuo script back-end e fai quello che vuoi.
Zanoldor,

1
Probabilmente questo non ha importanza al giorno d'oggi: ReSharper (immagino) emette un avviso " La pseudo-classe 'controllata' non è compatibile con Internet Explorer 8.0 ".
Uwe Keim,

211
$("#ans").attr('checked') 

ti dirà se è selezionato. È inoltre possibile utilizzare un secondo parametro true / false per selezionare / deselezionare la casella di controllo.

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

Per commento, utilizzare propinvece di attrquando disponibile. Per esempio:

$("#ans").prop('checked')

90

Basta usare $(selector).is(':checked')

Restituisce un valore booleano.


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

@Loic per impostare il suo valore usando la sintassi ternaria concisa, ad es .: a = ischecked? 1: 0

21

La risposta di Stefan Brinkmann è eccellente, ma incompleta per i principianti (omette l'assegnazione variabile). Giusto per chiarire:

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

Funziona così:

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

Esempio:

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

Avvisi "no"

Se questo è utile, per favore vota la risposta di Stefan Brinkmann.



15

Ho già riscontrato lo stesso problema, spero che questa soluzione possa aiutarti. per prima cosa, aggiungi un attributo personalizzato alle tue caselle di controllo:

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

scrivi un'estensione jQuery per ottenere valore:

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

utilizzare il codice per ottenere il valore della casella di controllo:

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

puoi provare qui


10
... perché jQuery è nota come libreria "scrivi più fai meno"
myshadowself

lunga storia che sei andato lontano JQUERY vuole che gli sviluppatori scrivano meno e facciano di più. semplice problema merita una soluzione semplice
ShapCyber

si, d'accordo, scrivi di meno, fai di più. scrivi l'estensione una volta e, per il resto del tempo, chiami solo API $ (someradio) .realVal (), non è necessario scrivere un'estensione molte volte.
alphakevin,

Non hai nemmeno bisogno di scrivere l'estensione una volta, non dimenticare mai "molte volte"! 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') e restituisce vero o falso.

Nella tua funzione:

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


4

Uso:

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

se non è selezionato, la prima parte non restituirà nulla, giusto?
xaxxon,

@Senthil, OP non sta chiedendo di ottenere il valore di una casella selezionata, piuttosto return 1se è selezionata
Om Shankar

4
function chkb(bool){
if(bool)
return 1;
return 0;
}

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

statusNum sarà uguale a 1 se la casella è selezionata e 0 se non lo è.

EDIT: è possibile aggiungere anche il DOM alla funzione.

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

var statusNum=chkb($("#ans"));

4

Di recente ho riscontrato un caso in cui avevo bisogno di controllare il valore della casella di controllo quando l'utente ha fatto clic sul pulsante. L'unico modo corretto per farlo è utilizzare l' prop()attributo.

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

questo ha funzionato nel mio caso forse qualcuno ne avrà bisogno.

Quando l'ho provato .attr(':checked')è tornato, checkedma volevo un valore booleano e un .val()valore di attributo restituito value.


4

Ci sono diverse opzioni come ....

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

Se tutte queste opzioni restituiscono true, è possibile impostare il valore in modo accourding.


Il primo dovrebbe essere (': controllato'), altrimenti non funziona.
Arie Livshin,

2

Prova questo

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

Qui flag è vero se selezionato altrimenti falso

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

Ancora una volta, questo farà ridere

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


0

Puoi ottenere valore (vero / falso) con questi due metodi

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

0

Prima controlla che il valore sia verificato

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

Altrimenti imposta il valore 0


0

Se si desidera che il valore intero sia selezionato o meno, provare:

$("#ans:checked").length

0

Puoi eseguirlo in questo modo:

$('input[id=ans]').is(':checked');     
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.