Se a caixa de seleção estiver marcada, só preciso obter o valor como 1; caso contrário, preciso obtê-lo como 0. Como faço isso usando o jQuery?
$("#ans").val()
sempre me dará um direito neste caso:
<input type="checkbox" id="ans" value="1" />
Se a caixa de seleção estiver marcada, só preciso obter o valor como 1; caso contrário, preciso obtê-lo como 0. Como faço isso usando o jQuery?
$("#ans").val()
sempre me dará um direito neste caso:
<input type="checkbox" id="ans" value="1" />
Respostas:
Use .is(':checked')
para determinar se está marcado ou não e defina seu valor de acordo.
Apenas use $(selector).is(':checked')
Retorna um valor booleano.
// use ternary operators
$("#ans").is(':checked') ? 1 : 0;
A resposta de Stefan Brinkmann é excelente, mas incompleta para iniciantes (omite a atribuição de variável). Só para esclarecer:
// this structure is called a ternary operator
var cbAns = ( $("#ans").is(':checked') ) ? 1 : 0;
Funciona assim:
var myVar = ( if test goes here ) ? 'ans if yes' : 'ans if no' ;
Exemplo:
var myMath = ( 1 > 2 ) ? 'yes' : 'no' ;
alert( myMath );
Alertas 'não'
Se isso for útil, por favor vote na resposta de Stefan Brinkmann.
Você pode tentar isso:
$('#studentTypeCheck').is(":checked");
Encontrei o mesmo problema antes, espero que esta solução possa ajudá-lo. primeiro, adicione um atributo personalizado às suas caixas de seleção:
<input type="checkbox" id="ans" value="1" data-unchecked="0" />
escreva uma extensão jQuery para obter valor:
$.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;
}
};
use o código para obter o valor da caixa de seleção:
$('#ans').realVal();
você pode testar aqui
Você também pode usar:
$("#ans:checked").length == 1;
Usar:
$("#ans option:selected").val()
return
1
se estiver selecionada
function chkb(bool){
if(bool)
return 1;
return 0;
}
var statusNum=chkb($("#ans").is(':checked'));
statusNum será igual a 1 se a caixa de seleção estiver marcada e 0 se não estiver.
EDIT: Você também pode adicionar o DOM à função.
function chkb(el){
if(el.is(':checked'))
return 1;
return 0;
}
var statusNum=chkb($("#ans"));
Recentemente, deparei-me com um caso em que precisava marcar o valor da caixa de seleção quando o usuário clicou no botão. A única maneira adequada de fazer isso é usar o prop()
atributo
var ansValue = $("#ans").prop('checked') ? $("#ans").val() : 0;
isso funcionou no meu caso, talvez alguém precise.
Quando tentei, .attr(':checked')
ele retornou, checked
mas queria um valor booleano e .val()
retornou o valor do atributo value
.
Existem várias opções existem como ....
1. $("#ans").is(':checked')
2. $("#ans:checked")
3. $('input:checkbox:checked');
Se todas essas opções retornarem true, você poderá definir o valor de maneira precisa.
Tente isto
$('input:checkbox:checked').click(function(){
var val=(this).val(); // it will get value from checked checkbox;
})
Aqui a flag é verdadeira se marcada caso contrário false
var flag=$('#ans').attr('checked');
Novamente, isso fará com que cheked
$('#ans').attr('checked',true);
$("#id").prop('checked') === true ? 1 : 0;
Primeiro verifique se o valor está marcado
$("#ans").find("checkbox").each(function(){
if ($(this).prop('checked')==true){
var id = $(this).val()
}
});
Caso contrário, defina o valor 0