Ir para conteúdo

POWERED BY:

Arquivado

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

Kadu_Web

[Resolvido] capturar valor do radio button

Recommended Posts

Olá pessoal. Estou tentanto fazer um carregamento de combo box dinamicamente com ajax.

O carregamento tá funcionando, mas quando tento realizar um teste antes, não consigo capturar o valor do radio button.

O esquema é o seguinte:

Seu radio button chamado "veiculo" estiver clicado na opção "moto" o ajax executa o carregamento dos modelos de moto, caso esteja em "carro" ele faz o carregamento dos modelos de carro.

Abaixo, segue meu código javascript e o trecho do html.

 

javascript

function GetXMLHttp() {  
	if (navigator.appName == "Microsoft Internet Explorer") {  
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
	} else {  
		xmlHttp = new XMLHttpRequest();  
	}  
	return xmlHttp;  
}  
var mod = GetXMLHttp();


function alimentarCombo(valor) {  
var tipo_c = document.getElementById("veiculo").value;

	if (tipo == "moto"){
		mod.open("GET", "carrega.ajax_motos.asp?id="+valor+"", true);  
	} else {
		mod.open("GET", "carrega.ajax.asp?id="+valor+"", true); 
	}
	mod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
	mod.onreadystatechange = function() {  
		if (mod.readyState == 4) {  
			document.getElementById("modelo").innerHTML = mod.responseText;  
		}  
	};  
	mod.send(null);  
}

Html:

<form id="frm_principal" class="principal" name="frm_principal" action="" method="get">
	  <p>
		<input name="veiculo" type="radio" id="veiculo_c" value="carro" checked="checked" onclick="carregaLista(this.value);" />
	  Buscar Carros
	  <input type="radio" name="veiculo" id="veiculo_m" value="moto" onclick="carregaLista(this.value);" />
	  Buscar Motos	</p>
	  <div class="label">
	  <p><label>Marca:</label></p>
	  <p><label>Modelo:</label></p>
	  <p><label>Ano:</label></p>
	  </div>
	  
	  <div>
		<p>
				   
		  <div id="marca"><select name="cmb_marca" id="cmb_marca" onchange="alimentarCombo(this.value);">
			<option value="">- - - Escolha - - -</option>
			</select></div>
		 </p>
		 <p>
		  <div id="modelo"><select name="cmb_modelo">  
	<option value="">- - - Escolha - - -</option>  </select>
		  </div>
		</p>
		<p>
		  <select name="cmb_ano_de" id="cmb_ano_de">
			<option> de: </option>
		  </select>
		  <select name="cmb_ano_ate" id="cmb_ano_ate">
			<option> até: </option>
		  </select>
		</p>
		  
		</div>
	  </form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existem alguns equivocos em seu código observe...

 

A função AlimentarCombo cria uma variavel com o nome de tipo_c depois você testa a variável tipo???? :blink: Deveria testar a variavel tipo_c

 

if (tipo_c == "moto")...

 

 

Outro equivoco...

 

você usa o document.getElementById("veiculo").value;

 

mas no seu codigo HTML não tem nenhum item com id veiculo.....e sim "veiculo_m"....

Acredito que se corrigir isto dará certo....

 

function GetXMLHttp() {  
	if (navigator.appName == "Microsoft Internet Explorer") {  
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
	} else {  
		xmlHttp = new XMLHttpRequest();  
	}  
	return xmlHttp;  
}  
var mod = GetXMLHttp();


function alimentarCombo(valor) {  
var tipo = document.getElementById("veiculo_m").value;

	if (tipo == "moto"){
		mod.open("GET", "carrega.ajax_motos.asp?id="+valor+"", true);  
	} else {
		mod.open("GET", "carrega.ajax.asp?id="+valor+"", true);
	}
	mod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
	mod.onreadystatechange = function() {  
		if (mod.readyState == 4) {  
			document.getElementById("modelo").innerHTML = mod.responseText;  
		}  
	};  
	mod.send(null);  
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado!

Corrigi. Mas ainda não funciona.

 

Acho que o problema pode estar no fato de os dois elementos radio estarem com o mesmo nome.

Acho que teria que pegar um valor tipo assim: document.getElementById("veiculo").checked.value

...sei lá.

Só sei que preciso pegar o valor do radio que estiver checkado no momento...

 

Agora ficou assim....

function alimentarCombo(valor) {  
var tipo = document.getElementById("veiculo").value;
	if (tipo == "moto"){
		mod.open("GET", "carrega.ajax_motos.asp?id="+valor+"", true);  
	} else {
		mod.open("GET", "carrega.ajax.asp?id="+valor+"", true); 
	}
	mod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  
	mod.onreadystatechange = function() {  
		if (mod.readyState == 4) {  
			document.getElementById("modelo").innerHTML = mod.responseText;  
		}  
	}  
	mod.send(null);  
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser assim?

<script>
function verifica()
{
var veiculo=document.getElementById("veiculo1").checked;	
	if (veiculo)
	{
		alert("opcao carro selecionada");
	}
	else
	{
		alert("opcao moto selecionada");
	}
}


</script>

 <br> <input name="veiculo" type="radio" id="veiculo1" value="carro"  Onchange="verifica();"  />
	  Buscar Carros<br>
	  <input type="radio" name="veiculo" id="veiculo2" value="moto"  Onchange="verifica();"/>Motos
	  </form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai novato.

Obrigado, pela ajuda o problema foi resolvido. Seu código ajudou, mas tinha um outro errinho...

Quando o combo com o resultado vinha da página ele vinha sem a chamada da função...corrigi isso e deu Certo!

Mais uma vez obrigado!!

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.