Ir para conteúdo
Fórum Script Brasil
  • 0

Duas Questoes


Halfar

Pergunta

Primeira questao:

tenho o seguinte select:

<select name="SelectAnos[]" class = "caixa" size="6" multiple style="WIDTH: 60px">

Note que a propriedade name deste select é uma matriz. Ocorre que tenho um botão que ao ser pressionado restabelece opcoes padrão. Por exemplo, a caixa de anos está listada "Todos anos", 2000, 2001,2002, etc. Suponhamos que o usuario clique no ano 2002. Quando o já referido botão for pressionado, será restaurada a opção "Todos anos". Se o nome do select fosse sem os colchetes da matriz, fosse apenas "SelectAnos" sei como faria, seria assim:

form1.SelectAnos.options[0].selected = true;

Mas como o select é uma matriz, não está dando certo. Tentei fazer assim:

form1.SelectAnos[].options[0].selected = true;

deste jeito dá erro... como poderia resolver isto???

Segunda questão:

O caso é semelhante ao anterior, só agora é com radiobuttons. Tenho 3 radiobuttons, todos com o mesmo nome, apenas alterando a propriedade value. então digamos que tenhamos os seguintes radiosbuttons:

<input type="radio" class = caixa name="radiobutton" value="a">

<input type="radio" class = caixa name="radiobutton" value="b">

<input type="radio" class = caixa name="radiobutton" value="c">

Note que a propriedade name é a mesma, apenas mudando o conteudo da propriedade value. Então, quando o botão mencionado na outra questão acima, como faria para fazer com que o botão com a propriedade value = a fosse marcado com selected?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Halfar,

O que aprendi foi que os nomes dados a elementos HTML só devem conter letras, números (desde que não seja o primeiro caractere do nome), e sublinhas.

Nunca tinha visto alguém colocar colchetes. O Opera, pelo menos, acusa isso como erro. Acredito que esse seja o problema.

No caso do radiobuttons, seria ssim:

document.form1.radiobutton[indice].cheked = true;

// TRUE ou FALSE

Link para o comentário
Compartilhar em outros sites

  • 0

bem, quanto aos colchetes eu coloquei para poder recuperar valores individuais, por exemplo, digamos que voce tenha um menu de lista, que permite multiplas selecoes, neste menu voce tem, digamos, os anos 2001,2002,2003. Se o usuário selecionar os anos 2001 e 2003, como vou recuperar isto? Eu só consegui fazendo assim:

aqui eu tenho o menu listando os anos:

<select name="SelectAnos[]" class = "caixa" size="6" multiple style="WIDTH: 60px">

<option>2001</option>

<option>2002</option>

<option>2003</option>

</select>

aqui eu recupero os valores que o usuário selecionou, se ele seleciona apenas um ano, aí é fácil, mas se fizer multiplas selecoes, tive que fazer o codigo assim:

$NumeroDimensoes = 0;

for ($i = 0; $i < count($SelectAnos); $i++){

$AnosSelecionados[$NumeroDimensoes]= $SelectAnos[$i];

$NumeroDimensoes = $NumeroDimensoes+1;

}

Bem, já que voce disse que nunca viu usar colchetes nisto, como voce faria para recuperar multiplas selecoes? Para falar a verdade, eu tambem achei curiosa esta forma, note que dentro do count está uma variavel $SelectAnos, que é a propriedade name do menu, se me lembro bem, se eu colocar outro nome de variavel aí não funciona...

Bem, mas como voce recuperaria estes valores multiplos?

Link para o comentário
Compartilhar em outros sites

  • 0

é, realmente tive que retirar os colchetes, porque no js não funciona mesmo.

Mas agora tenho outra questao relacionada a este tópico:

quando é multipla selecao, ou seja, usuário selecionou varios e itens no select, para eu desmarcar o que ele selecionou como faria isto?

// este marca o select padrão, ou seja, " Todos tribunais"

form1.SelectTribunal.options[0].selected = true;

Mas como tem varios outros que o usuario marcou, ao marcar o padrão acima é necessário que os outros sejam todos desmarcados, como faria isto?

ola fercosmig, será que voce não estaria enganado?

voce havia dito:

recupera os dados do form normalmente, os valores selecionados um um select de multipla escolha são enviados juntos, separados por ",", só quebrar depois.

Mas eu retirei os colchetes para resolver o problema principal que abordei neste tópico, só que agora o codigo não funciona direito na parte do php, porque quando se faz multipla selecao, ele pega apenas o ultimo resultado.

então fiz uma pesquisa na internet e encontrei que se deve usar os colchetes sim, conforme abaixo:

Para resolver isto é bem fácil, basta pôr “[ ]” no final do nome do campo select multiple. Desta maneira, o PHP interpreta o campo como sendo um array e assim cada posição é gravada da maneira correta. Veja abaixo a maneira correta:

<form action="exemplo.php" method="POST">
<select multiple name="comida[]">
<option value="Japonesa">Japonesa</option>
<option value="Chinesa">Chinesa</option>
<option value="Mineira">Mineira</option>
<option value="Italiana"> Italiana </option>
<option value="Vegetariana"> Vegetariana </option>
...
</select><br>
<input type="submit" value="Enviar" >
</form>
Nosso PHP seria construído da seguinte forma:
<?php

$comidas=$_POST["comida"];

//loop para visualizarmos os elementos selecionados
for ($i=0;$i<count($comidas);$i++)
{
   echo "<br> Comida " . $i . ": " . $comidas[$i];
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...