Jump to content
Fórum Script Brasil
  • 0

Select não Está Alimentando Corretamente...


Halfar
 Share

Question

Tenho duas caixas selects, uma é alimentada com os meses do ano, e a outra com os dias do ano.

Ocorre que quando o usuário clica na caixa de meses, de acordo com o mês selecionado, a caixa de dias alimentada de 1 a até 31, se meses com 30 dias alimenta de 1 a 30, se meses com 31 dias alimenta com 31 dias, se mês de fevereiro alimenta de 1 a 28 ou 29 (aqui depende da funcao bisexto que faz a verificacao).

O problema é o seguinte:

Se voce escolhe inicialmente um mês que tem 30 dias, ela alimenta corretamente. Se depois voce escolhe um mês que tem 31 dias, ela alimenta com 31 dias corretamente.

Mas, agora, se voce voltar a escolher um mês que tem 30 dias, ela permanece alimentando com 31 dias. E mesmo que voce escolha o mês de fevereiro que tem 28 dias, ela continua alimentando com 31 dias.

Pelo o que percebo ela guarda sempre o ultimo numero maior que havia sido escolhido.

Já chequei a variável, a variável está retornando os valores corretamente.

Me lembro que quando programava em VB, tinha a opção clear que limpava todos os itens da caixa.

Será que o JavaScript guarda os valores anteriores nesta caixa? De repente ela alimenta até 28 dias, mas como já tinha guardado na memoria até 31 dias, ela mantém...

Bem, é uma loucura isto...O codigo que alimenta a caixa está abaixo:

function AlimentaSelects(){

alert("xDiasInicial" + QuantidadeDiasInicial);

alert("xDiasFinal" + QuantidadeDiasFinal);

for(var i = 0; i<=QuantidadeDiasInicial; i++){

document.form1.SelectDiaInicio.options = new Option(i);

}

for(var i = 0; i<=QuantidadeDiasFinal; i++){

document.form1.SelectDiaFinal.options = new Option(i);

}

}//fim da funcao AlimentaSelects

Notem que os dois alerts existentes no inicio da funcao, sempre estão me informando o valor da variavel QuantidadeDiasInicial e QuantidadeDiasFinal corretamente. Sempre mostra corretamente, 30, 31 ou 28 dias. Mesmo que ela tenha 30 ou 28 dias, a caixa é alimentada com 31 dias, se na vez anterior havia sido escolhido 31 dias...

Outra coisa que quero salientar, este programa estava funcionando corretamente até sexta-feira passada, existe alguma possibilidade de alguma configuracao do JS ter sido alterada (hackeada) para dar este problema?

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Bem, esta eu mesmo vou responder...

Para resolver o problema eu tive que realmente limpar todos os itens da caixa e depois alimentar com os dados novamente, senão existe a possiblidade de alguns itens serem alimentados indevidamente.

Para limpar, veja o codigo abaixo:

Dias="31"

for(var i = 0; i<=Dias; i++){

form1.SelectDiaFinal.options = null;// remove os itens do select

}

O codigo acima é necessário, pois quando voce alimenta a caixa com os dias de 1 a 31, e depois alimenta novamente com os dias de 1 a 30, o dia 31 irá aparecer na lista tambem. Então antes de alimentar a lista, tem que limpá-la antes... assim todos os itens da lista são eliminados, evitando o tipo de erro acima...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...