Eu já tentei de todas as maneiras possíveis, mas ainda não consegui. Eu tenho uma janela modal com um checkbox
Eu quero que quando o modal for aberto, a checkbox
seleção ou desmarque deve basear-se em um valor do banco de dados. (Já tenho que trabalhar com outros campos de formulário.) Comecei a tentar verificá-lo, mas não funcionou.
Meu div html:
<div id="fModal" class="modal" >
...
<div class="row-form">
<div class="span12">
<span class="top title">Estado</span>
<input type="checkbox" id="estado_cat" class="ibtn">
</div>
</div>
</div>
e o jquery:
$("#estado_cat").prop( "checked", true );
Eu também tentei com attr
, e outros vistos aqui nos fóruns, mas nenhum parece funcionar. Alguém pode me indicar o caminho certo?
EDIT: ok, estou realmente faltando algo aqui ... Posso marcar / desmarcar usando código se a caixa de seleção estiver na página, mas está na janela modal, não posso. Eu tentei dezenas de maneiras diferentes ...
Eu tenho um link que deveria abrir o modal:
e jquery para "ouvir" o clique e executar algumas operações como preencher algumas caixas de texto com dados provenientes do banco de dados. Tudo funciona como eu quero, mas o problema é que não consigo marcar a caixa de seleção marcada / desmarcada usando o código. ajuda por favor!
$(function() {
$(".editButton").click(function(){
var id = $(this).data('id');
$.ajax({
type: "POST",
url: "process.php",
dataType:"json",
data: { id: id, op: "edit" },
}).done(function( data ) {
//the next two lines work fine, i.e., it grabs the value from database and fills the textboxes
$("#nome_categoria").val( data['nome_categoria'] );
$("#descricao_categoria").val( data['descricao_categoria'] );
//then I tried to set the checkbox checked (because its unchecked by default) and it does not work
$("#estado_cat").prop("checked", true);
$('#fModal').modal('show');
});
evt.preventDefault();
return false;
});
});
Respostas:
você precisa usar a função 'prop':
Antes do jQuery 1.6 (consulte a resposta do usuário2063626 ):
fonte
Tomando todas as respostas propostas e aplicando-as à minha situação - tentando marcar ou desmarcar uma caixa de seleção com base em um valor recuperado de true (deve marcar a caixa) ou false (não deve marcar a caixa) - tentei todas as opções acima e descobriu que o uso de .prop ("marcado", verdadeiro) e .prop ("marcado", falso ) era a solução correta.
Ainda não consigo adicionar comentários ou respostas, mas achei que isso era importante o suficiente para aumentar a conversa.
Aqui está o código à mão para uma modificação de calendário completo que diz se o valor recuperado "allDay" é verdadeiro e marque a caixa de seleção com o ID "even_allday_yn":
fonte
$( "#even_allday_yn").prop('checked', allDay);
$('#even_allday_yn').prop('checked', allDay === true)
funcionará porqueallDay === true
fornece um resultado booleano.Cara tente abaixo do código:
OU
OU
fonte
.prop('checked', true)
vez deattr
- acabei de encontrar o mesmo problema eprop
funciona.:checked
pseudo-seletor ou outros recursos HTML da caixa de seleção nativa, deverá usá-lo.prop
..attr()
é o caminho a seguir para versões anteriores,.prop()
para o jQuery 1.6+.O atributo "marcado" marca a caixa de seleção assim que existe. Portanto, para marcar / desmarcar uma caixa de seleção, você deve definir / desabilitar o atributo.
Para marcar a caixa:
Para desmarcar a caixa:
Para testar o status verificado:
Espero que ajude...
fonte
Como você está em uma janela modal (dinâmica ou na página), pode usar o seguinte código para atingir seu objetivo: (Encontrei o mesmo problema no meu site e foi assim que o corrigi)
HTML:
CÓDIGO:
No "kendoWindow" acima, está minha janela (a minha é dinâmica, mas também faço isso ao anexar um elemento diretamente na página). Estou percorrendo uma matriz de dados ("queriesToAddToGroup") para ver se alguma linha tem um atributo de COPY. Nesse caso, desejo ativar a caixa de seleção dentro da janela que define esse atributo quando um usuário salva dessa janela.
fonte
prop
como sugere esta resposta é a maneira CORRETA de realizar a verificação / desmarcação dinâmica da caixa de seleção jQuery.verifique se true e false não estão entre aspas.
fonte
.prop('checked', true);
Mais informações neste post.attr()
funcionou, conforme descrito.Você pode escrever como no código abaixo.
HTML
jQuery
Espero que funcione para você.
fonte
Se você deseja usar essa funcionalidade para um script GreaseMonkey para marcar automaticamente uma caixa de seleção em uma página, lembre-se de que simplesmente definir a propriedade marcada pode não acionar a ação associada. Nesse caso, "clicar" na caixa de seleção provavelmente irá (e definir a propriedade marcada também).
fonte
Find retornará array, então use [0] para obter o mesmo que exista apenas um item
se você não usar find, então
isso funcionou bem no Mozilla Firefox para mim
fonte
Trabalhou para mim:
fonte
Tente isso, pois você provavelmente está usando a interface do usuário do jQuery (se não, por favor, comente)
fonte
Você já tentou rodar
$("#estado_cat").checkboxradio("refresh")
na sua caixa de seleção?fonte
Isso funciona.
fonte
Eu também encontrei esse problema.
e aqui está o meu código antigo não funciona
Aqui está o meu novo código que é trabalhado agora:
portanto, o ponto principal é antes de funcionar, verifique se a propriedade marcada existe e não foi removida.
fonte
Jbookaccess.prop("checked", data.access != 'private');
Isso ocorre porque você, com a versão mais recente do jquery,
attr('checked')
retorna'checked'
enquantoprop('checked')
retornatrue
.fonte
fonte
Marque a caixa de seleção após carregar a janela modal. Acho que você está definindo a caixa de seleção antes de carregar a página.
fonte
Eu sei que isso pede uma solução Jquery, mas eu gostaria de salientar que é muito fácil alternar isso em javascript simples.
Ele funcionará em todas as versões atuais e futuras.
fonte
Lembre-se de incrementar o id e o atributo, respectivamente. Na caixa de seleção Inicialização dinamicamente adicionada.
fonte