Ir para conteúdo

POWERED BY:

Arquivado

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

elton73ssa

[Resolvido] Filtro estranho

Recommended Posts

Olá,

 

Tenho duas combos retornando valores armazenados no banco de dados. os valores da combo2 muda de acordo com o que for selecionado na combo1.

 

Não sei pq ao selecionar o primeiro item da combo1 nada acontece. Funciona normal se eu selecionar a partir do segundo item... :mellow:

 

<script type="text/JavaScript">
function getPotencia(what){

 if (what.selectedIndex != '') {
     var cat = <? echo $cat; ?>;
      var potencia = what.value;
      document.location=('produtos_lista.php?cat=' + cat +'&potencia=' + potencia);

   }

}
</script>

<select name="potencia" id="potencia" size="5" onchange="getPotencia(this);">
<? while($linha = mysql_fetch_array($seleciona1)){ ?>
<option value="<? echo $linha['potencia']; ?>" </option>
<? } ?>
</select>

Acho que o problema é no JS por isso postei aqui. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo errado no teu php, ne?!

 

analise o HTML gerado Ctrl+U

execute assim:

<select name="potencia" id="potencia" size="5" onchange="getPotencia(this);">
<?php
	while($linha = mysql_fetch_assoc($seleciona1))
	{
		echo '<option value="'.$linha['potencia'].'">'.$linha['potencia'].'</option>'; 
	}
?>
</select>
se não entendeu, olha mais ou menos como tá ficando o teu html:

<select name="potencia" id="potencia" size="5" onchange="getPotencia(this);">
<option value="primeiro" </option>
<option value="segundo" </option>
</select>
a menos que o código que você colou aqui esteja diferente do seu, tem coisa errada ne?! ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou ainda, colega.

 

<select name="potencia" id="potencia" size="5" onchange="getPotencia(this);">
<option value="1" >1</option>
<option value="3" >3</option>
<option value="5" >5</option>                            
</select>

Só acontece com o primeiro item... Ou melhor, se clicar no primeiro item nao chama o evento e nem dá erro. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

para agilizar eu coloquei um option vazio antes do while. Dessa forma o primeiro e problemático option será o vazio e aí assim o segundo option, que antes era o primeiro, funciona.

 

Mas acho que essa não e a solução. Fica esse espaço vazio, ainda mais que é do tipo list...

 

 

 

<select name="potencia" id="potencia" size="5" onchange="getPotencia(this);">
<option value=""></option>
<option value="1" >1</option>
<option value="3" >3</option>
<option value="5" >5</option>                            
</select> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá.. não havia testado, mas oque você pretendia com o IF?

//if (what.selectedIndex != '') 
 {

veja o erro:

function getPotencia(what){
	alert( what.selectedIndex );//0
não está entrando no IF, pois:

0==''

 

por isso não executa. A 'index selecionada' do primeiro option, tem chave 0, e esse 0 não deixou entrar no teu IF, por isso que não executa.

se você quer um teste, para ver se algo foi selecionado faz algo como:

this.value==''

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto faz.. mesmo que a combo não fosse 'do tipo list', o valor do selectedIndex para o primeiro option, ainda seria 0, e isso ainda faria com que não entrasse no IF.

 

E pensando melhor, se você dispara a função de qualquer jeito, ao selecionar algo no combobox, não tem pq fazer aquele if.. pelo menos em nenhuma situação em que eu possa imaginar, já que nenhum valor da combo pode ser nulo.

 

^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tanto faz.. mesmo que a combo não fosse 'do tipo list', o valor do selectedIndex para o primeiro option, ainda seria 0, e isso ainda faria com que não entrasse no IF.

 

E pensando melhor, se você dispara a função de qualquer jeito, ao selecionar algo no combobox, não tem pq fazer aquele if.. pelo menos em nenhuma situação em que eu possa imaginar, já que nenhum valor da combo pode ser nulo.

 

^_^

 

Geralmente se coloca um "Selecione" como primeira opção do combo e, portanto, seria um valor nulo. Daí se o indivíduo esquece de selecionar eu impedia do "selecione" ir na variável. Por isso o IF.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.. mas ai você deveria usar: this.value ^_^

 

selectedIndex, vai te trazer como se os options formassem um array:

<option value="1">1</option>
<option value="3">3</option>
<option value="5">5</option>
..

var option = new Array();
option[] = 1;
option[] = 3;
option[] = 5;

ou seja:

Array(0=>1, 1=>3, 2=>5);

 

explicando, selectedIndex te trará o 0,1 ou 2, e não o 1,3,5

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.