Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

Array com valores de checkbox

Recommended Posts

Este código esta saindo assim: ,,20,21,22,23

Preciso saber porque aparece duas vírgulas no início.

 

    var var_item ="";
var_item = new Array();

    for (var i = 0; i < form.elements.length; i++ ) {
        if (form.elements[i].type == 'checkbox') {
            if (form.elements[i].checked == true) {
               var_item[i]=form.elements[i].value;
				
            }
        }
    }	

alert(var_item)

Help por caridade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq os seus dois primeiros elementos tem valor vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

com javascript "atual", dá para fazer de uma forma muito, muito fácil.

<!doctype html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<fieldset>
    <input type="checkbox" name="ch[]" value="1" />
    <input type="checkbox" name="ch[]" value="4" checked="checked" />
    <input type="checkbox" name="ch[]" value="7" checked="checked" />
    <input type="checkbox" name="ch[]" value="3" />
    <input type="checkbox" name="ch[]" value="9" />
</fieldset>


<script type="text/javascript">
(function(){

    var checks = document.querySelectorAll("input[type='checkbox']:checked"),
        i = checks.length,
        arr = [];

    while (i--) {
        arr.push(checks[i].value);
    }

    alert(arr);//4,7

}());
</script>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa! Super prático. ajudou bastante.

 

Mas no grid em que tenho os checkbox, há um que é o "master", é o que marca os demais, se for clicadoEste checkbox "master" não tem valor, quando rodo seu código aparace no arra 25,30,40,on.

 

 

Como faço para não pegar o ck que não tem valor?

 

Imagino que tenho que adicionar o nome daqueles cks que quero, neste linha

var checks = document.querySelectorAll("input[type='checkbox']:checked"),
tentei isso mas não rolou

 

 

var checks = document.querySelectorAll("input[type='checkbox']:checked, [name='child_flag']"),

Com esse teste que fiz, ele seleciona todos os itens, mesmo os não marcados :-(

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste o seu html.

 

dentro do querySelectorAll é um seletor css. Basta especificar esse seletor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O cabeçalho é este. É o ck "master" que marca todos os demais, ao ser clicado.

  <th width="7%" align="left"><input name="master_flag" type="checkbox" id="master_flag" onclick="sel_checkbox()" /></th>

Este linha é a que exibe os cks em loop

<td align="left"><input type="checkbox" name="child_flag" id="child_flag"  value="<%=Recordset1("EventosForneceCod")%>" /></td>

Preciso que o javascript percorra somente os checkbox que estiverem marcados dentro do loop, e não o do cabeçalho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é só fazer o seletor css que nem eu te disse cara.

var checks = document.querySelectorAll("input[name='child_flag'][type='checkbox']:checked"),

estude css.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É, realmente preciso estudar mais CSS.... só uso para layout.

Bom, usei a linha que sugeriu, mas o alerta fica em branco.

 

Veja um teste feito no script que postou.

 

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
</head>

<body>
<!doctype html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>

<script type="text/javascript">
function teste()
{

var checks = document.querySelectorAll("input[name='child_flag'][type='checkbox']:checked"),
        i = checks.length,

        arr = [];

    while (i--) {
        arr.push(checks[i].value);
    }

    alert(arr);//4,7

};
</script>
<fieldset>
    <input type="checkbox" name="ch[]" value="1" />
    <input type="checkbox" name="ch[]" value="4" checked="checked" />
    <input type="checkbox" name="ch[]" value="7" checked="checked" />
    <input type="checkbox" name="ch[]" value="3" />
    <input type="checkbox" name="master" />
  <input type="button" name="button" id="button" value="Enviar" onClick="teste()">
</fieldset>


</body>
</html>
</body>
</html>

Note que adicionei o checkbox master .

 

Se eu usar assim (com um vírgula entre os seletores)

var checks = document.querySelectorAll("input[name='child_flag'],[type='checkbox']:checked"),

Ao marcar o ck master o array fica valor1, valor2, valor3,on

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas ai depende do name do checkbox. Para os checks com o name:

<input type="checkbox" name="ch[]" value="1" />

a linha de código deveria ser:

var checks = document.querySelectorAll("input[name='ch[]'][type='checkbox']:checked"),

entendeu ?

eu já tinha enviado com a o código para o seu html, e não para esse de exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.