Retorno checkbox value

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.

Como você deixou o indice no checkbox?

assim:

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

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

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.

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?[quote=“GuiiBarbosaa, post:6, topic:352926”]
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.
[/quote]

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…

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 !

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:

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.