Ir para conteúdo

POWERED BY:

Arquivado

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

Sérgio Macedo

[Resolvido] Recarga de tela com submit - Não consigo dar selected

Recommended Posts

Boa noite,

 

 

Pessoal estou com um sistema em php, banco de dados em mysql e com algumas funções de input com ajax.

 

 

Meu problema é o seguinte...

O primeiro input já carrega o segundo input com o codigo ajax ta ai tudo bem... mas preciso de ter um checkbox que habilita alguns inputs ou desabilita... utilizei o submit para mostrar ou esconder estes campos.

 

 

O grande problema é quando ocorre o submit e com os campos já selecionados... (Obs.: Submit e volta para a mesma pagina...)

 

 

 

<body onready="ajaxmontalocalidade($_POST['caixauf'], $_POST['caixaloc'], 'loc_caixalocalidade.php')">

 

e na função select tem:

onchange="ajaxmontalocalidade(this.value, localidadeselecionada, 'loc_caixalocalidade.php')"

 

Utilizei essa função no body para dar a carga ao iniciar a tela... o problema é q o campo não lista os itens mas armazena o item já anteriormente selecionado.. sabe se lá como...

Ao movimentar o primeiro campo que chama a função a ajax e selecionando novamente o campo passado ele já marca o item como era para acontecer...

 

 

Caso alguem queria que eu passe o link da pagina por favor me solicite.

 

 

Meu exemplo é muito parecido com : http://resposta.orgfree.com/ajax/

So que não tem o codigo da proxima pagina ( resposta ). ;-(

 

function ajaxmontalocalidade(coduf, codloc, url)  {
		 //verifica se o browser tem suporte a ajax
	  try {
		 ajax = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  catch(e) {
		 try {
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
		 }
		 catch(ex) {
			try {
			   ajax = new XMLHttpRequest();
			}
			catch(exc) {
			   alert("Esse browser não tem recursos para uso do Ajax");
			   ajax = null;
			}
		 }
	  }
	  //se tiver suporte ajax
	  if(ajax) {

		 //deixa apenas o elemento 1 no option, os outros são excluídos
		 document.forms[0].caixaloc.options.length = 1;

		 id0option  = document.getElementById("optionloc");

		 ajax.open("POST", url, true);
		 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

		 ajax.onreadystatechange = function() {
			//enquanto estiver processando...emite a msg de carregando
			if(ajax.readyState == 1) {
			   id0option.innerHTML = "Carregando...";
			}
			//após ser processado - chama função processXML2 que vai varrer as cidades
			if(ajax.readyState == 4 ) {
			   if(ajax.responseXML) {
				  processXML2(ajax.responseXML);
			   }
			   else {
				   //caso não seja um arquivo XML emite a mensagem abaixo
				   id0option.innerHTML = ".: Selecione UF :.";
			   }
			}
		 }
		 //passa o código do estado escolhido
		 var informacao = "coduf="+coduf+"&codloc="+codloc;
		 ajax.send(informacao);
	  }
   }

   function processXML2(obj){
	  //pega a tag RESPOSTA
	  var cidadearray = obj.getElementsByTagName("resposta");

	  //total de elementos contidos na tag RESPOSTA
	  if(cidadearray.length > 0) {
		 //percorre o arquivo XML paara extrair os dados
		 for(var i = 0; i < cidadearray.length; i++) {
			var item = cidadearray[i];
			//contéudo dos campos no arquivo XML
			var codloc	=  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
			var localidade =  item.getElementsByTagName("nome")[0].firstChild.nodeValue;
			var idselecionado = item.getElementsByTagName("selecionado")[0].firstChild.nodeValue;

			id0option.innerHTML = ".: Selecione :.";

			//cria um novo option dinamicamente
			var novo = document.createElement("option");
				//atribui um ID a esse elemento
				novo.setAttribute("id", "optionloc");
				//atribui um valor
				novo.value = codloc;
				//se codigo igual ao registro selecionado inserir selected
				if(idselecionado==1)	{
						 novo.selected = "selected";
					 }
				//atribui um texto
				novo.text  = localidade;
				//finalmente adiciona o novomodelo elemento
				document.forms[0].caixaloc.options.add(novo);
		 }
	  }
	  else {
		//caso o XML volte vazio, printa a mensagem abaixo
		id0option.innerHTML = ".: Selecione UF :.";
	  }
   }

<?php

	$cuf = $_POST["coduf"];
	$cloc = $_POST["codloc"];


	$sql = "Select * from tblocalidade WHERE cuf=".$cuf." ORDER BY localidade";

$sql = mysql_query($sql);
$row = mysql_num_rows($sql);

if($row) {
   //XML
   $xml  = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
   $xml .= "<resultado>\n";
   for($i=0; $i<$row; $i++) {
	   $codloc	= mysql_result($sql, $i, "codloc");
	  $localidade = mysql_result($sql, $i, "localidade");
	  $xml .= "<resposta>\n";
	  $xml .= "<codigo>".$codloc."</codigo>\n";
	  $xml .= "<nome>".$localidade."</nome>\n";

		if ($codloc == $cloc) {
		  $xml .= "<selecionado>"."1"."</selecionado>\n";
		}
		else {
		  $xml .= "<selecionado>"."0"."</selecionado>\n";
		}
		
	  $xml .= "</resposta>\n";
   }//FECHA FOR

   $xml.= "</resultado>\n";

   //CABEÇALHO
   Header("Content-type: application/xml; charset=iso-8859-1");
}

echo $xml;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

consegui resolver meu problema...

 

 

Tive que ao iniciar a pagina criar uma variavel que recebe o POST e no final do codigo onde todos os campos já haviam sido

executados... fiz a chamada da função ajax novamente... ai atualizou com os campos que eu desejava.

 

 

Eu acreditava que o comando onready colocado no <body> fizesse essa mesma função.

;-( malzzzzz

 

Até mais

Sérgio

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.