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

Select não Está Alimentando Corretamente...


Halfar

Pergunta

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 para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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 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...