Ir para conteúdo

POWERED BY:

Arquivado

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

Junior Zancan

[Resolvido] Problema com submit() no IE e Chrome

Recommended Posts

Eu fiz um formulário de cotação para uma empresa de transportes, nesse formulário tem 4 menus(selects) UF de Origem e destino e Cidade de Origem/Destino.

Quando a pessoa seleciona algum estado, ele envia o formulário e através de PHP ele busca as cidades na base de dados.

 

O problema é o seguinte, fica muito esquisito um botão de submit, então eu utilizei a função: document.origem.submit();

Onde origem é o nome do formulário onde está o select para escolher o estado de origem. E utilizei o evento onClick="envia_origem()", no Firefox funciona certinho, sem erros, nada. Mas já no meu querido amigo e o navegador mais "adorado" de qualquer webmaster, aquele que da erro em até mesmo um simples "alert", o nosso amigo IE, não funciona, e infelizmente nem no Chrome.

 

Aqui está o código:

 

<script>
function esconde(div) {
document.getElementById(div).style.visibility="hidden";
}

function mostra(div) {
document.getElementById(div).style.visibility="visible";
}

function envia_origem() {
origem.action = "index.php";
origem.submit();
}

function envia_cidade_origem() {
document.cidade_origem.submit();
}

function envia_destino()  {
document.destino.submit();
}

function envia_cidade_destino() {
document.cidade_destino.submit();
}
</script>

<form action="#" method="post" name="origem" id="origem">
	        <select name="uf_origem" id="uf_origem">
			<?php if ($_SESSION['uf_origem'] == "") {?>
			<option value="">--</option>
			<?php do {?>
			<option onClick="javascript:document.origem.submit();" value="<?php echo "".$estados['uf'].""; ?>"><?php echo "".$estados['uf'].""; ?></option>
	        <?php } while($estados = @mysql_fetch_array($query_estados)); } else {?>
			<option selected value="<?php echo "".$_SESSION['uf_origem'].""; ?>"><?php echo "".$_SESSION['uf_origem']."";?></option>
			<?php do {?>
			<option onClick="envia_origem()" value="<?php echo "".$estados['uf'].""; ?>"><?php echo "".$estados['uf'].""; ?></option>
			<?php } while($estados = @mysql_fetch_array($query_estados)); }?>
			  </select>
	        </form>
</td>
	      <td valign="middle"><form action="#" method="post" name="cidade_origem" id="cidade_origem">
	        <select name="c_origem" id="c_origem">
			<?php if ($_SESSION['c_origem'] == "" || $_POST['uf_origem'] != "") {?>
			<option value="">Selecione</option>
			<?php do {?>
			<option onClick="envia_cidade_origem()" value="<?php echo "".$cidades['nome'].""; ?>"><?php echo "".$cidades['nome'].""; ?></option>
	        <?php } while($cidades = @mysql_fetch_array($query_cidades)); } else {?>
			<option selected value="<?php echo "".$_SESSION['c_origem'].""; ?>"><?php echo "".$_SESSION['c_origem'].""; ?></option>
			<?php do {?>
			<option onClick="envia_cidade_origem()" value="<?php echo "".$cidades['nome'].""; ?>"><?php echo "".$cidades['nome'].""; ?></option>
			<?php } while($cidades = @mysql_fetch_array($query_cidades)); }?>
			  </select>
	        </form>
</td>
        </tr>
	     <tr>
	       <td valign="top"><font color="#FFFFFF" face="Arial Rounded MT Bold">Destino:</font></td>
	      <td valign="middle"><form action="" method="post" name="destino" id="destino">
	        <select name="uf_destino" id="uf_destino">
	        <?php if ($_SESSION['uf_destino'] == "") {?>
			<option value="">--</option>
			<?php do {?>
			<option onClick="envia_destino()" value="<?php echo "".$estados2['uf'].""; ?>"><?php echo "".$estados2['uf'].""; ?></option>
	        <?php } while($estados2 = @mysql_fetch_array($query_estados2)); } else {?>
			<option selected value="<?php echo "".$_SESSION['uf_destino'].""; ?>"><?php echo "".$_SESSION['uf_destino']."";?></option>
			<?php do {?>
			<option onClick="envia_destino()" value="<?php echo "".$estados2['uf'].""; ?>"><?php echo "".$estados2['uf'].""; ?></option>
			<?php } while($estados2 = @mysql_fetch_array($query_estados2)); }?>  
			  </select>
           </form></td>
	      <td valign="middle" id="destino"><form action="" method="post" name="cidade_destino" id="cidade_destino">
	        <select name="c_destino" id="c_destino">
	        <?php if ($_SESSION['c_destino'] == "" || $_POST['uf_destino'] != "") {?>
			<option value="">Selecione</option>
			<?php do {?>
			<option onClick="envia_cidade_destino()" value="<?php echo "".$cidades2['nome'].""; ?>"><?php echo "".$cidades2['nome'].""; ?></option>
	        <?php } while($cidades2 = @mysql_fetch_array($query_cidades2)); } else {?>
			<option selected value="<?php echo "".$_SESSION['c_destino'].""; ?>"><?php echo "".$_SESSION['c_destino'].""; ?></option>
			<?php do {?>
			<option onClick="envia_cidade_destino()" value="<?php echo "".$cidades2['nome'].""; ?>"><?php echo "".$cidades2['nome'].""; ?></option>
			<?php } while($cidades2 = @mysql_fetch_array($query_cidades2)); }?> 
			  </select>
           </form>

 

Obs: esta é apenas a parte importante do código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, prefira usar DOM:

 

troca:

function envia_cidade_origem() {
document.cidade_origem.submit();
}
por:

function envia_cidade_origem() {
document.getElementById('cidade_origem').submit();
}
e
function envia_origem() {
origem.action = "index.php";
origem.submit();
por:
function envia_origem() {
document.getElementById('origem').action = "index.php";
document.getElementById('origem').submit();

Assim, dica 'pessoal'. Não adianta criticar o navegador, se na verdade você não entendeu como ele trabalha.. e nem se realmente era 'bug dele'. :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, seria 'um mundo melhor', se todos usassem um navegador atualizado.

 

Até mesmo o FireFox não está 'livre de falhas e bugs'.

Só, não adianta criticar 'este ou aquele', se na verdade o possivel bug se encontra no nosso próprio código. ^_^

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.