Ir para conteúdo

Arquivado

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

Carcleo

desabiltar um botão submit (ou button) de um formulario

Recommended Posts

Pessoal, como faço para desabiltar um botão submit (ou button) de um formulario, mas não no onclik dele?

 

Tipo, usar um radio buttom para isso.

 

Tentei com, document.form.campo.disabled=true, mas só funcionou com os campos do form mas com o submit não deu.

 

tentei com getelementbyid

 

Tambem não deu.;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só.

 

Eu estou preenchendo um form que tem só login e senha (até ai esta ok?)

 

Bom, o usuario é valido (existe) então coleto tambem o campo Bloqueio da tabela de usuarios no MySql referente a esse usuario. (até ai esta ok?)

 

Dai eu derivo (envio) o login e senha e o bloqueio do usuario para um outro formulario onde ele estará preenchendo outros dados como por exemplo endereço, tel... (até ai esta ok?)

 

Bom, se o Bloqueio receber N, o botão submite do form fica normal, se o Bloqueio receber S, ai eu preciso desabilitar o botão submit (ou todo o form) para o usuario não poder prosseguir com o cadastro.

 

Como resolver essa questão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso:

<html>
<head>
<title>desabilitar submit</title>
<script type="text/javascript">
function desabilita_submit( el )
{
	if( el.checked == true )
		document.getElementById('enviar').disabled = 'disabled';
	else
		document.getElementById('enviar').disabled = '';
}
</script>
</head>
<body>
<form action="" method="">
	<input type="checkbox" onclick="desabilita_submit( this );" />
	<input type="text" name="nome" value="" />
	<input type="submit" name="enviar" value="enviar" id="enviar" />
</form>
</body>
</html>
?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tentei assim la no php e não deu certo:

if ($erros[0] == -10) {
					Print "CEP de destino inválido.<br> Cloque <a href='java script:window.history.go(-1)'>Aqui</a> e tente um novo CEP!";
					echo "<scriptdocument.getElementById('Finalizar').disabled = 'disabled';</script>";
							 }
Obs.: Essa parte $erros[0] == -10 esta numa parte do form

No form

<input type="submit" id="Finalizar" name="Finalizar" value="Finalizar"  WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)" onClick="CriticaFormulario()">
que esta errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja o HTML gerado. Ctrl+U

 

Para usar Javascript sobre o DOM, você precisa que o DOM já esteja carregado.

se você fizer:

 

-> chamada javascript à elemento do DOM

-> elemento

 

não vai funcionar mesmo !

precisa ser:

 

-> elemento

-> chamada javascript à elemento do DOM

 

ou

-> espera o documento carregar ( window.onload() ).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte:

 

Não deu certo.

Na verdade eu até consegui desativar o form todo mas quanmdo cliko nbo botao submit, mesmo desativado ele envia o formulario.

 

Veja o meu form:

	<FORM METHOD="POST" ACTION="CarrinhoFinal.php?acao=gravar_pedido" name="FORM">
	<INPUT TYPE="hidden" NAME="FORM" VALUE="FORM">
    <INPUT TYPE="hidden" NAME="peso_medio" VALUE="<?=$peso_medio;?>">
    <input type="hidden" name="TENVIO" value="<?=$TENVIO; ?>">
    <input type="hidden" name="TCEP" value="<?=$TCEP; ?>">    
    <input type="hidden" name="Id_Cliente" value="<?=$SESSAOlogin; ?>">          
	<TABLE width="400" align="center">
	<tr><td colspan="2" align="center"><h2><b>Finalizando Compra</b></h2></td></tr>
	<TR>
		<TD>PAGAMENTO </TD>
		<TD>
      <!--
        <div id="cartao" style="display:block;">oi</div>
        onclick="javascript: fecha('cartao');"
        -->
            <INPUT type="radio" NAME="TPGTO" value="MASTERCARD" checked="checked"> MASTERCARD 
            <br>
            <INPUT type="radio" NAME="TPGTO" value="BOLETO"> BOLETO  (À Vista)<br>
            <INPUT type="radio" NAME="TPGTO" value="DEPOSITO">           
             DEPÓSITO  (À Vista)
      </TD>
	</TR>
	<TR>
		<TD>NOME:/RAZÃO SOCIAL </TD>
		<TD><INPUT TYPE="text" NAME="TNOME" value="<?=$nome;?>" disabled="disabled"></TD>
	</TR>    
	<TR>
		<TD>CPF/CNPJ:</TD>
		<TD><INPUT TYPE="text" NAME="TCPF" value="<?=$cpfcnpj;?>" disabled="disabled"></TD>
	</TR>
    <TR>
		<TD>EMAIL:</TD>
		<TD><INPUT TYPE="text" NAME="TEMAIL" value="<?=$email;?>" disabled="disabled"></TD>
	</TR>	
	<TR>
		<TD>ENDEREÇO: <font color="red">(de entrega)</font></TD>
		<TD><INPUT TYPE="text" NAME="TENDERECO" value="<?=$endereco;?>"></TD>
	</TR>
	<TR>
		<TD>BAIRRO:</TD>
		<TD><INPUT TYPE="text" NAME="TBAIRRO" value="<?=$bairro;?>"></TD>
	</TR>
	<TR>
		<TD>CIDADE:</TD>
		<TD><INPUT TYPE="text" NAME="TCIDADE" value="<?=$cidade;?>"></TD>
	</TR>
	<TR>
		<TD>ESTADO:</TD>
		<TD><INPUT TYPE="text" NAME="TESTADO" value="<?=$estado;?>"></TD>
	</TR>
   <TR>
		<TD>FONE (Contato):</TD>
		<TD><INPUT TYPE="text" NAME="TFONE" value="<?=$tel;?>"></TD>
	</TR>	
	<TR>
		<TD>VALORES:</TD>
		<TD>
        <? include ("frete.php"); ?>
  		<input type="hidden" name="valor_final" value="<?=$valor_final; ?>">      	
		</TD>
	</TR>
	<TR align="center">
	  <TD colspan="2"><input type="submit" id="Finalizar" name="Finalizar" value="Finalizar"  WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)" onClick="CriticaFormulario()"></TD>
	</TR>
  </TABLE>
</FORM>

Essa pagin que esta com, include, frete.php, tem um codigo que m,e retorna um, xml do correio e é trabalhado no frete.php memo.

Lá, se por acaso, houver erro, eu quero que no carregamento do form todo fique desativado.;

 

Segue o codigo do frete.php

<?php
#####################################
# Código dos Serviços dos Correios  #
#    FRETE PAC = 41106              #
#    FRETE SEDEX = 40010            #
#    FRETE SEDEX 10 = 40215         #
#    FRETE SEDEX HOJE = 40290       #
#    FRETE E-SEDEX = 81019          #
#    FRETE MALOTE = 44105           #
#    FRETE NORMAL = 41017           #
#    SEDEX A COBRAR = 40045         #
#####################################

        $nCdEmpresa          = "";
        $sDsSenha            = "";
        $nCdServico          = $_POST['TENVIO'];
        $sCepOrigem          = 36855000;
        $sCepDestino         = $_POST['TCEP'];
		$sCepDestino         = eregi_replace("([^0-9])","",$sCepDestino);
        $nVlPeso             = $peso_medio;
        $nCdFormato          = 1;
        $nVlComprimento      = 20;
        $nVlAltura           = 20;
        $nVlLargura          = 20;
        $nVlDiametro         = 0;
        $sCdMaoPropria       = "N";
        $nVlValorDeclarado   = 0;
        $sCdAvisoRecebimento = "S";

// URL de Consulta dos Correios entregue à variavel $correios
$correios ="http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?"
."nCdEmpresa=$nCdEmpresa&"
."sDsSenha=$sDsSenha&"
."sCepOrigem=$sCepOrigem&"
."sCepDestino=$sCepDestino&"
."nVlPeso=$nVlPeso&"
."nCdFormato=$nCdFormato&"
."nVlComprimento=$nVlComprimento&"
."nVlAltura=$nVlAltura&"
."nVlLargura=$nVlLargura&"
."sCdMaoPropria=$sCdMaoPropria&"
."nVlValorDeclarado=$nVlValorDeclarado&"
."sCdAvisoRecebimento=$sCdAvisoRecebimento&"
."nCdServico=$nCdServico&"
."nVlDiametro=$nVlDiametro&"
."StrRetorno=xml";

  
$dados_correios = simplexml_load_file($correios);
//print_r($dados_correios);
print "<p>";

$total = $dados_correios->xpath('cServico/Valor'); 
$total = floatval(str_replace(',', '.', $total[0]));
$PrazoEntrega = $dados_correios->xpath('cServico/PrazoEntrega');   
$erros = $dados_correios->xpath('cServico/Erro');   
$ValorAvisoRecebimento = $dados_correios->xpath('cServico/ValorAvisoRecebimento');   


if ($erros[0] != 0)
   {     
	   // Tratamento dos Erros
	   //CEP de destino inválido
	   if ($erros[0] == -3) {
		            Print "CEP de destino inválido.<br> Cloque <a href='javascript:window.history.go(-1)'>Aqui</a> e tente um novo CEP!";
					echo "<script>document.FORM.Finalizar.disabled=true;</script>";
					         }
	   if ($erros[0] == -10) {
		            Print "CEP de destino inválido.<br> Cloque <a href='javascript:window.history.go(-1)'>Aqui</a> e tente um novo CEP!";
					echo "<script>document.getElementById('Finalizar').disabled = 'true';</script>";
					         }
	   //Sistema temporariamente fora do ar. Favor tentar mais tarde.
   	   else if ($erros[0] == -33) {
 		            Print "Sistema dos correios temporariamente fora do ar.<br> Por favor navegue um pouco mais pelo site e após alguns segundos, tente novamente!";
					echo "<script>document.FORM.Finalizar.disabled=true;</script>";

		                          }	   	   
	   //Serviço indisponível para o trecho informado.
	   else if ($erros[0] == -6) {
             		echo "<script>alert('Sistema dos correios indisponível para o trecho informado');</script>";
					session_unregister("MeuCarrinho");
             	    echo "<script>document.location='produtos.php?acao=listar'</script>";
                                 }
	  //Para qualquer outro erro
	   else { session_destroy();  echo "<script>document.location='produtos.php?acao=listar'</script>";}
	   
   }
else 
   { 
      		  print "O valor do envio por ";
			  print $nome_servico;
			  print " será de: R$";
			  print number_format($total, 2, ',', '.');
			  print "<br>e o prazo de entrega será de ";
			  print $PrazoEntrega[0];
			  print " dia(s) úteis";
			  print "<p>";
			  print "Valor da compra sem o frete R$ ";
			  print number_format($preco_total, 2, ',', '.');
			  print "<p>"; 
			  $valor_final = $total + $preco_total;
			  print "Valor da compra com o frete R$ ";
			  print number_format($valor_final, 2, ',', '.');			   

   }

// Neste exemplo estou colocando apenas PAC e SEDEX
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola a todos!

 

Resolvi em partes o problema.

 

O que eu fiz:

 

Peguei um formulario e coloquei ele todo dentro de uma variavel $FORMULARIO;

 

Depois dessa variavel, fiz um include para uma pagina (frete.php) que me retornará o resultado do calculo do frete. Eu acho que até não há nehuma novidade né?

 

Acontece, que nessa pagina frete.php, tem uma chamada para a variavel $FORMULARIO pois, caso o resultado do frete.php dê um numero negativo exibe o erro, mas, caso o frete.php retorne valores do frete, dai exibe o formulario que esta na variavel $FORMULARIO;

 

Até ai deu para entender?

 

Bom, até neste ponto, tudo esta correto.

 

Porem, quando submeto os dados do formulario que esta na variavel $FORMULARIO, os $HTTP_POST_VARS simplemente não vão.

 

Eis os códigos:

CarrinhoFinal_Conteudo.php

...
   if ($acao=="RECEBE_CEP_SERVICO") {
				  $busca = mysql_query("SELECT * FROM clientes where id='$SESSAOlogin';") or die("A consulta falhou: " . mysql_error());
                  list($id, $nome, $email, $cidade, $estado, $senha, $cpfcnpj, $tel, $cel, $endereco, $numero, $bairro,$cep) = mysql_fetch_row($busca);
				  $FORM_ENDERECO = "
 	<FORM METHOD='POST' ACTION='CarrinhoFinal.php?acao=gravar_pedido' name='FORM'>
	<INPUT TYPE='hidden' NAME='FORM' VALUE='FORM'>
    <INPUT TYPE='hidden' NAME='peso_medio' VALUE='$peso_medio'>
    <input type='hidden' name='TENVIO' value='$TENVIO; ?>'>
    <input type='hidden' name='TCEP' value='$TCEP; ?>'>    
    <input type='hidden' name='Id_Cliente' value='$SESSAOlogin; ?>'>          
	<TABLE width='400' align='center'>
	<tr><td colspan='2' align='center'><h2><b>Finalizando Compra<br>Por favor. Confira os dados e preencha corretamente o formulário antes de prosseguir!</b></h2></td></tr>
	<TR>
		<TD>PAGAMENTO </TD>
		<TD>
      <!--
        <div id='cartao' style='display:block;'>oi</div>
        onclick='javascript: fecha('cartao');'
        -->
            <INPUT type='radio' NAME='TPGTO' value='MASTERCARD' checked='checked'> MASTERCARD 
            <br>
            <INPUT type='radio' NAME='TPGTO' value='BOLETO'> BOLETO  (À Vista)<br>
            <INPUT type='radio' NAME='TPGTO' value='DEPOSITO'>           
             DEPÓSITO  (À Vista)
      </TD>
	</TR>
	<TR>
		<TD>NOME:/RAZÃO SOCIAL </TD>
		<TD><INPUT TYPE='text' NAME='TNOME' value='$nome' disabled='disabled'></TD>
	</TR>    
	<TR>
		<TD>CPF/CNPJ:</TD>
		<TD><INPUT TYPE='text' NAME='TCPF' value='$cpfcnpj' disabled='disabled'></TD>
	</TR>
    <TR>
		<TD>EMAIL:</TD>
		<TD><INPUT TYPE='text' NAME='TEMAIL' value='$email' disabled='disabled'></TD>
	</TR>	
	<TR>
		<TD>ENDEREÇO: <font color='red'>(de entrega)</font></TD>
		<TD><INPUT TYPE='text' NAME='TENDERECO' value='$endereco'></TD>
	</TR>
	<TR>
		<TD>BAIRRO:</TD>
		<TD><INPUT TYPE='text' NAME='TBAIRRO' value='$bairro'></TD>
	</TR>
	<TR>
		<TD>CIDADE:</TD>
		<TD><INPUT TYPE='text' NAME='TCIDADE' value='$cidade'></TD>
	</TR>
	<TR>
		<TD>ESTADO:</TD>
		<TD><INPUT TYPE='text' NAME='TESTADO' value='$estado'></TD>
	</TR>
   <TR>
		<TD>FONE (Contato):</TD>
		<TD><INPUT TYPE='text' NAME='TFONE' value='$tel'></TD>
	</TR>	
    <input type='hidden' name='valor_final' value='$valor_final; ?>'>      	
   <TR align='center'>
	  <TD colspan='2'><input type='submit' name='Finalizar' value='Finalizar'  WIDTH='78' HEIGHT='20' style='background-color: rgb(0,111,55); color: rgb(255,255,0)' onClick='CriticaFormulario()'></TD>
	</TR>
  </TABLE>
</FORM>

                                    "; 
			include ('frete.php');
			}
			}

frete.php

<?php
#####################################
# Código dos Serviços dos Correios  #
#    FRETE PAC = 41106              #
#    FRETE SEDEX = 40010            #
#    FRETE SEDEX 10 = 40215         #
#    FRETE SEDEX HOJE = 40290       #
#    FRETE E-SEDEX = 81019          #
#    FRETE MALOTE = 44105           #
#    FRETE NORMAL = 41017           #
#    SEDEX A COBRAR = 40045         #
#####################################

        $nCdEmpresa          = "";
        $sDsSenha            = "";
        $nCdServico          = $_POST['TENVIO'];
        $sCepOrigem          = 36855000;
        $sCepDestino         = $_POST['TCEP'];
		$sCepDestino         = eregi_replace("([^0-9])","",$sCepDestino);
        $nVlPeso             = $peso_medio;
        $nCdFormato          = 1;
        $nVlComprimento      = 20;
        $nVlAltura           = 20;
        $nVlLargura          = 20;
        $nVlDiametro         = 0;
        $sCdMaoPropria       = "N";
        $nVlValorDeclarado   = 0;
        $sCdAvisoRecebimento = "S";

// URL de Consulta dos Correios entregue à variavel $correios
$correios ="http://shopping.correios.com.br/wbm/shopping/script/CalcPrecoPrazo.aspx?"
."nCdEmpresa=$nCdEmpresa&"
."sDsSenha=$sDsSenha&"
."sCepOrigem=$sCepOrigem&"
."sCepDestino=$sCepDestino&"
."nVlPeso=$nVlPeso&"
."nCdFormato=$nCdFormato&"
."nVlComprimento=$nVlComprimento&"
."nVlAltura=$nVlAltura&"
."nVlLargura=$nVlLargura&"
."sCdMaoPropria=$sCdMaoPropria&"
."nVlValorDeclarado=$nVlValorDeclarado&"
."sCdAvisoRecebimento=$sCdAvisoRecebimento&"
."nCdServico=$nCdServico&"
."nVlDiametro=$nVlDiametro&"
."StrRetorno=xml";

  
$dados_correios = simplexml_load_file($correios);
//print_r($dados_correios);
print "<p>";

$total = $dados_correios->xpath('cServico/Valor'); 
$total = floatval(str_replace(',', '.', $total[0]));
$PrazoEntrega = $dados_correios->xpath('cServico/PrazoEntrega');   
$erros = $dados_correios->xpath('cServico/Erro');   
$ValorAvisoRecebimento = $dados_correios->xpath('cServico/ValorAvisoRecebimento');   


if ($erros[0] != 0)
   {     
	   // Tratamento dos Erros
	   //CEP de destino inválido
	   if ($erros[0] == -3) {
		            Print "CEP de destino inválido.<br> Cloque <a href='javascript:window.history.go(-1)'>Aqui</a> e tente um novo CEP!";
					echo "<script>document.FORM.Finalizar.disabled=true;</script>";
					         }
	   //Sistema temporariamente fora do ar. Favor tentar mais tarde.
   	   else if ($erros[0] == -33) {
 		            Print "Sistema dos correios temporariamente fora do ar.<br> Por favor navegue um pouco mais pelo site e após alguns segundos, tente novamente!";
					echo "<script>document.FORM.Finalizar.disabled=true;</script>";

		                          }	   	   
	   //Serviço indisponível para o trecho informado.
	   else if ($erros[0] == -6) {
             		echo "<script>alert('Sistema dos correios indisponível para o trecho informado');</script>";
					session_unregister("MeuCarrinho");
             	    echo "<script>document.location='produtos.php?acao=listar'</script>";
                                 }
	  //Para qualquer outro erro
	   else {
		            Print "CEP de destino inválido ou erro no sistema dos correios.<br> Cloque <a href='javascript:window.history.go(-1)'>Aqui</a> e tente um novo CEP!";
					echo "<script>document.FORM.Finalizar.disabled=true;</script>";
            }
	   
   }
else 
   {            
   
   			  print	 $FORM_ENDERECO;
			   switch ($nCdServico) {
				case 41106:
				$nome_servico = " PAC ";
				break;
				case 40010:
				$nome_servico = " SEDEX ";
				break;
			                     	}
									?>
<TABLE width='400' align='center'><tr>
    <TD>VALORES:</TD>
    <TD>
<?
			  print "O valor da sua compra sem o frete R$ ";
			  print number_format($preco_total, 2, ',', '.');
			  print "<p>"; 

      		  print "O valor do envio por ";
			  print $nome_servico;
			  print " será de: R$";
			  print number_format($total, 2, ',', '.');
			  print "<p>";
			  
			  print "O prazo de entrega será de ";
			  print $PrazoEntrega[0];
			  print " dia(s) úteis";
			  print "<p>";
			  
			  $valor_final = $total + $preco_total;
			  print "O valor da tua compra com o frete R$ ";
			  print number_format($valor_final, 2, ',', '.');			   

?>
    </td></tr></table>	
    <?								

   }

// Neste exemplo estou colocando apenas PAC e SEDEX
?>

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.