Ir para conteúdo

POWERED BY:

Arquivado

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

-=Érico=-

select com array[]

Recommended Posts

Olá a todos,

 

Estou com um problema aqui.

 

Tenho esses selects:

 

<select name="sel[]">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select name="sel[]">
<option>1</option>
<option>2</option>
<option>3</option>
</select>

Eu não sei qual o termo que é usado quando eu coloco um nome para um select dessa maneira com colchetes, por isso tive dificuldade para achar algo a respeito.

 

Gostaria de saber como pegar o valor de cada select no javascript.

 

Tentei com document.forms['formulario'].sel[0].value e não foi, gostaria de saber a maneira correta de trabalhar com essas informações. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

-=Érico=-, Quando a página é carregada o JavaScript cria um array com todos os elementos, se você tiver dois formulários, basta usar forms[0] para acessar o primeiro e forms[1] para acessar o seguinte.

 

Com seus selects é a mesma coisa, ele cria o array dos selects, e para acessar faça o seguinte:

document.forms['formulario'].sel[0].value

Os selects ficam assim:

<select name="sel">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select name="sel">
<option>2</option>
<option>2</option>
<option>3</option>
</select>

Essa maneira não é muito legal, pois se você acrescentar algum elemento irá alterar a ordem dos índices dentro do array. Use um nome único ou id para acessar os elementos.

 

Como está ele não irá exibir ou retornar nenhum valor, pois as options dos selects não têem valor definido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

-=Érico=-, Quando a página é carregada o JavaScript cria um array com todos os elementos, se você tiver dois formulários, basta usar forms[0] para acessar o primeiro e forms[1] para acessar o seguinte.

 

Com seus selects é a mesma coisa, ele cria o array dos selects, e para acessar faça o seguinte:

document.forms['formulario'].sel[0].value

Os selects ficam assim:

<select name="sel">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select name="sel">
<option>2</option>
<option>2</option>
<option>3</option>
</select>

Essa maneira não é muito legal, pois se você acrescentar algum elemento irá alterar a ordem dos índices dentro do array. Use um nome único ou id para acessar os elementos.

 

Como está ele não irá exibir ou retornar nenhum valor, pois as options dos selects não têem valor definido.

Gutto,

 

Conforme havia dito, eu tentei document.forms['formulario'].sel[0].value e não funcionou, esse é o problema, achei que funcionasse mas não funcionou, essa maneira que você colocou não há como funcionar, já que tem selects com o mesmo nome, por isso os colchetes para gerar um vetor.

 

No PHP eu acesso as informações com $_POST['sel'][0], agora no javascript eu tentei com document.forms['formulario'].sel[0].value e não funcionou, os options tem valores, eu só criei os selects aqui no tópico pra mostrar o problema que eu estou tendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo.

 

<script>
		selects = document.getElementsByTagName('select');
		selects[0].value;
</script>

Para pegar o valor de vários selects inclua um for.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo.

 

<script>
		selects = document.getElementsByTagName('select');
		selects[0].value;
</script>

Para pegar o valor de vários selects inclua um for.

Gutto,

 

Não é possível eu fazer dessa maneira, eu tenho dezenas de outros selects no documento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E por que o nome tem que ser um array? Não tem como fazre o que você quer, assim, simples.

 

Com o que o Gutto postou você consegue pegar os valores sem problemas, independente se na página você tem mil, dois mil selects. É só fazer o que ele falou: usar um for para percorrer todos os select da página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E por que o nome tem que ser um array? Não tem como fazre o que você quer, assim, simples.

 

Com o que o Gutto postou você consegue pegar os valores sem problemas, independente se na página você tem mil, dois mil selects. É só fazer o que ele falou: usar um for para percorrer todos os select da página.

Os selects são dinâmicos, está em uma página PHP, não tem como eu saber a posição daquele select.

 

O campo select é um array porque fica muito mais fácil de trabalhar os selects pelo PHP, em vez de criar um contador e ficar criando sel1 sel2, sel3, quando eu posso criar um sel[] e percorrer o vetor e achar quantos selects tem no momento.

 

Eu quero saber se têm alguma maneira de pegar os valores pelo atributo name nesse caso, se não o jeito vai ser criar um id pra cada select, bem porco, pelo que eu tô vendo, não vai ter jeito.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Para pegar o valor do select eu uso



var indice=document.formnome.sel.selectedIndex;

var vtamanho =document.formnome.sel.options[indice].value;


se for multiselect pode-se verificar se esta selecionado com

if(document.formnome.sel.options.selected) ...


pode-se varrer varios elementos com o mesmo id em javascript



var s=[];


var x=document.getElementById("idsel");

for (var i=0;i<x.length;i++)

{

if(x.elements.value.trim()!='')

s=''+x.elements.value+'';

}


no caso do select poderia ser:

x.elements.options[j].value;


mas na hora de passar para o php nao mande varias variaveis de mesmo nome

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.