Ir para conteúdo

POWERED BY:

Arquivado

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

murilo

[Resolvido] Gerar listbox dinamicamente

Recommended Posts

Amigos,

 

Fiz uma busca rápida no forum mas não consegui encontrar o que preciso, talvez por não saber como procurar.

 

Tenho uma tabela de cursos e nesta tabela informo se haverá avaliações, nos seguintes critérios:

1: Sim, obrigatória

2: Sim, opcional

3: Não

 

Listo os cursos em um List e ao selecionar ele deverá carregar outro com a seguinte característica:

Caso o curso tenha avaliação 1 ele deverá criar o conteúdo do list box com os números de 1 a 3, caso a avaliação seja 2 ele irá mostrar de 0 a 3 e caso seja 3 não irá mostrar o list.

 

Consegui resolver o problema nos códigos 2 e 3 mas quando é 1 fica um campo em branco e os números de 1 a 3 em baixo. Como imagem a seguir:

Imagem Postada

Notem que o primeiro ítem está vazio.

 

O código que gera o list é o seguinte:

function handleHttpResponseVAP(){
	campo_select = document.form1.avaliacoesPre;
	if (http.readyState == 4) {
		campo_select.options.length = 0;
		results = http.responseText;
		if (results == 1) {
			document.getElementById('tdAP1').style.display = "inline";
			document.getElementById('tdAP2').style.display = "inline";
			document.getElementById('txAP').innerHTML = 'Preenchimento Obrigatório';
			for( i = 1; i < 4; i++ ){
				campo_select.options[i] = new Option( i, i );
			}
		} else if (results == 2) {
			document.getElementById('tdAP1').style.display = "inline";
			document.getElementById('tdAP2').style.display = "inline";
			document.getElementById('txAP').innerHTML = 'Preenchimento Opcional';
			for( i = 0; i < 4; i++ ){
				campo_select.options[i] = new Option( i, i );
			}
		} else if (results == 3) {
			document.getElementById('tdAP1').style.display = "none";
			document.getElementById('tdAP2').style.display = "none";
		}
	}
}

Alguem pode me ajudar??? Já tentei o que minha imaginação permitiu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código 1 fica em branco porque você começa a iteração pelo índice 1 (for( i = 1; i < 4; i++ ){), deixando o índice "0" do select em branco. Mas no caso do código 2 você começa do zero e então não ocorre o problema:

 

Tenta substituir:

campo_select.options[i] = new Option( i, i );

por:

campo_select.options[campo_select.options.length] = new Option( i, i );

De modo que o índice do select não será o da variável "i" do seu "for", e sim pela quantidade de itens já colocados no select:

 

 

                if (results == 1) {
                        document.getElementById('tdAP1').style.display = "inline";
                        document.getElementById('tdAP2').style.display = "inline";
                        document.getElementById('txAP').innerHTML = 'Preenchimento Obrigatório';
                        for( i = 1; i < 4; i++ ){
                                campo_select.options[campo_select.options.length] = new Option( i, i );
                        }
                } else if (results == 2) {
                        document.getElementById('tdAP1').style.display = "inline";
                        document.getElementById('tdAP2').style.display = "inline";
                        document.getElementById('txAP').innerHTML = 'Preenchimento Opcional';
                        for( i = 0; i < 4; i++ ){
                                campo_select.options[campo_select.options.length] = new Option( i, i );
                        }
                } else if (results == 3) {
                        document.getElementById('tdAP1').style.display = "none";
                        document.getElementById('tdAP2').style.display = "none";
                }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Alexandre,

 

Muito obrigado pela ajuda, deu certo a sua dica.

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.