Ir para conteúdo
Fórum Script Brasil
  • 0

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


Carlos Rocha

Pergunta

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.;

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

beleza irmão?

Seguinte:

um form tem la os campos: nome, endereço, tel, etc. Certo?

E tambem tem o botõ submit para enviar o form. certo?

Então, quero uma função que desabilite este boitão submit mas que esta função estee em outro componente e não no proprio onclick do botão.

Tendeu irmão?

Na verdade estou tendo um rerorno do php que, dependendo deste retrorno não posso liberar o form para envio. Sacou?

No aguardo!

Link para o comentário
Compartilhar em outros sites

  • 0

i aew carinha não sei se entende muito bem, mas vou tentar dar um exemplo, saca só:

<?php
    $s1 = 'true';
    $s2 = 'false';
?>
<html>
<head>
<script type='text/javascript'>
    
    window.onload = function(){
        var phpS  = [ '<?php echo $s1 ?>' , '<?php echo $s2 ?>' ];
        var oFrms = document.getElementsByTagName( 'form' );
        var oFieldsForm = null;
        for ( var i = 0; i < oFrms.length; i++ )
        {
            oFieldsForm = oFrms[i].elements;
            for ( var j = 0; j < oFieldsForm.length; j++ )
            {
                if ( oFieldsForm[j].type == 'submit' )
                {
                    oFieldsForm[j].disabled = ( phpS[i] == 'true' ) ? true : false;
                }    
            }    
        }    
        
    }
    
</script>
</head>
<title>Pagina</title>
<body>
    
    <form name="frm1" >
        <input type="submit" value='form1'/>
    </form>
    
    <form name="frm2" >
        <input type="submit" value='form2'/>
    </form>
</body>
</html>

qualquer coisa posta aew, abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi sim mas não é isso não.

Olha só.

Eu estou preenchendo um, forma 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.

Tendeu?

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, você precisa fazer essa validação no onload do formulario?

Amigo para bloquear você pode usar DOM

Nesse caso ficaria assim

<script type="text/javascript">
 function DesativaSubmit(elemento,ativa){
     if (ativa == T){
         document.getElementById(elemento).disabled = 'true';
     }
 }
</script>
para usar você poderia chamar a função em um botão, ou mesmo no onload, exemplo
<input type="button" name="button" id="button" value="Button"  onclick="DesativaSubmit('button','T');"/>

Editado por Kiver Vinicius
Link para o comentário
Compartilhar em outros sites

  • 0

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?

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

  • 0
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 "&lt;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?

em vez de <script>document.getElementById('Finalizar').disabled = 'disabled';</script>

use

<script>document.getElementById('Finalizar').disabled = 'true';</script>

Link para o comentário
Compartilhar em outros sites

  • 0

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="java script: fecha('cartao');"
        -->
            <INPUT type="radio" NAME="TPGTO" value="MASTERCARD" checked="checked"> MASTERCARD 
            <br>
            <INPUT type="radio" NAME="TPGTO" value="BOLETO"> BOLETO  (&Agrave; Vista)<br>
            <INPUT type="radio" NAME="TPGTO" value="DEPOSITO">           
             DEP&Oacute;SITO  (&Agrave; Vista)
      </TD>
    </TR>
    <TR>
        <TD>NOME:/RAZ&Atilde;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='java script: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='java script: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
?>

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

  • 0

Opa, bom dia amigo, tdo bem? cara deixa eu ver se entendi, nesses seus "echos", você está conseguindo desabilitar o botão submit, mas em que momento você está mandando chamar esse frete.php, se for botão,verifique esse botão não está como TYPE="submit", porque se não quando você clica com intenção de somente chamar a frete.php você envia o formulário junto ?

fica meio q dificil isso brother

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

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='java script: fecha('cartao');'
        -->
            <INPUT type='radio' NAME='TPGTO' value='MASTERCARD' checked='checked'> MASTERCARD 
            <br>
            <INPUT type='radio' NAME='TPGTO' value='BOLETO'> BOLETO  (&Agrave; Vista)<br>
            <INPUT type='radio' NAME='TPGTO' value='DEPOSITO'>           
             DEP&Oacute;SITO  (&Agrave; Vista)
      </TD>
    </TR>
    <TR>
        <TD>NOME:/RAZ&Atilde;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='java script: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='java script: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
?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...