Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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. :(
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. :(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>Tá.. não havia testado, mas oque você pretendia com o IF?
//if (what.selectedIndex != '')
{
veja o erro:
function getPotencia(what){
alert( what.selectedIndex );//0nã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==''
É que antes a combo não era do tipo list... :)
O que a falta de atenção não faz.... Agora sim
Resolvido. Valeu. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
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.
^_^
>
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.
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
Algo errado no teu php, ne?!
analise o HTML gerado Ctrl+U
execute assim: