Retorno checkbox value

8 respostas
G

Recorro ao fórum mais uma vez, porém agora para pedir ajuda sobre Jquery, imagino que essa duvida seja aqui em javascript.

Seguinte, eu tenho uma tabela, e nessa tabela dispus de vários checkbox como índices para edição através de um botão, exemplo, linha um tem todos os seus dados e uma check box para referência-la. O indice retornado pelo checkbox, ou seja, se selecionei uma caixa o valor de retorno vai ser o indice ao qual irei relacionar a uma operação no banco de dados, porem ao retornar esse indice um escape me esta sendo exibixo, meu código:

$(':checkbox:checked').each(function(i){
				id[i] = $(this).val();
			});

quando do um console.log(id), o valor correto é retornado porem na seguinte formatação: ex o numero do indice + /, ou seja 1/, ou 2/ e assim sucessivamente.

8 Respostas

R

Como você deixou o indice no checkbox?

G

assim:

<input type="checkbox" class="checkthis" name="editneg" value='.$dados->id.'/>
R

Provavelmente o js vai trazer null ou undefined nesse value, tente dessa forma…

<input ... value='<?=$dados->id?>'/>

Se não funcionar tente assim…

<input ... value='<?php echo $dados->id?>'/>

Agora quanto ao javascript essa linha ficou confusa…

id[i] = $(this).val();

O que você pretende fazer? Pegar todos os checks marcados e mandar para o php? Você está usando ajax?

Cuidado quando se declara…

$(':checkbox:checked')...

Qualquer outro checkbox mesmo que não tenha o name=“editneg” e estiver marcado será chamado, pode tentar refinar seu filtro assim…

$('input:checkbox[name="editneg"]:checked')...

Ou melhor ainda…

$('input[name="editneg"]:checked')...
G

Olá amigo, obrigado pela pronta resposta, na primeira parte estou informando os check box assim:

(tive que remover a tag

aqui de baixo pois o forum não exibe meu código).

echo “

”.‘input type=“checkbox” class=“checkthis” name=“editneg” value=’.$dados->id.’/>’."
".$dados->id."
".$dados->master."
".$dados->distribuidor."
".$dados->tp_negocio."
".$dados->qtd_linha."
".$dados->empalvo."
".date(‘d/m/Y’,strtotime($dados->dt_negociacao))."
".$dados->persp_fechamento."%
".$dados->sgc."
".$dados->acao."
";

nessa linha: id[i] = $(this).val();

eu atribuo qual check box esta checkado atravez de um each,

assim: $(’:checkbox:checked).each(function(i){

id[i] = $(this).val();

});

Obrigado pela dica do checado, eu utilizo o each pois tenho que validar se mais de um check box esta selecionado, caso sim, impeço a ação.

o erro ainda persiste, ainda me é repassado o / como resultado.

R

Quando disse confuso não quis dizer sobre a atribuição mas sim o sentido disso…

id[i] = $(this).val();

Minha preocupação é de você estar confundindo, declarando id[i] no php achando que o js vai preenchê-lo pois é muito comum esse equívoco em iniciantes (confundir ambiente cliente/servidor)…

Onde esse id foi criado, qual a finalidade?

“GuiiBarbosaa:

Obrigado pela dica do checado, eu utilizo o each pois tenho que validar se mais de um check box esta selecionado, caso sim, impeço a ação.

Ai é que está o pulo do gato, se sua intenção é contar quantos checks foram marcados, pode apenas usar o atributo length assim…

var marcados = $('input[name="editneg"]:checked'); //retorna array...

if (marcados.length > 1) {
    alert("Não irá prosseguir...");
    return;
} else {
    alert("Pode continuar...");
}

Percebeu a diferença? Um each é um loop mascarado, isso pode causar lentidão no seu sistema pois ele precisa percorrer item por item etc onde você fazendo uma única chamada retorna um array pronto pra você usar…

G

Opa, rsrs, gostei do pulo do gato :smiley: , mas minha interação vai alem, preciso saber se mais de um foi preenchido, caso não, me retorne sua respectiva ID entendeu ? obrigado amigo !

R

Então com isso você nunca irá atingir o objetivo…

$(':checkbox:checked').each(function(i){
    id[i] = $(this).val();
});

Pois você “forçou” trazer apenas os marcados, pegou?

Se precisa percorrer ou trazer tanto marcados ou não melhor fazer duas chamadas diretas…

var marcados = $('input[name="editneg"]:checked');
var nao_marcados = $('input[name="editneg"]:not(:checked)');

Ou no each e depois ver a marcação…

$('input[name="editneg"]').each(function(i) {
    var campo = $(this);
    id[i] = campo.value;

    if (campo.checked) {
        console.log("Marcou:", campo.value);
    } else {
        console.log("Não marcou:", campo.value);
    }
});

Aí é com você, perceba que talvez o problema esteja no :checked… boa sorte ai! :slight_smile:

G

iai amigão, boa noite ! Obrigado pela pronta resposta ! Utilizei suas atribuições normalmente, porem verifiquei que quando mudo os valores que são atribuidos a checkbox, ou seja, de inteiro para um texto por exemplo o ‘/’ que me é apresentado quando informo os valores como numericos somem ! imagino que a string ‘/’ retornada com o numero seja alguma medida para informar o fim do algarismo porém não sei se esse parametro vai ser considerado quando passar para meu pdo fazer o select com o where.

Criado 27 de julho de 2017
Ultima resposta 27 de jul. de 2017
Respostas 8
Participantes 2