Carlos Rocha Postado Março 9, 2010 Denunciar Share Postado Março 9, 2010 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 getelementbyidTambem não deu.; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Março 9, 2010 Denunciar Share Postado Março 9, 2010 (editado) i aew Carlos Rocha, explica melhor e tals! Editado Março 9, 2010 por Romerito Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 9, 2010 Autor Denunciar Share Postado Março 9, 2010 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romerito Postado Março 9, 2010 Denunciar Share Postado Março 9, 2010 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 9, 2010 Autor Denunciar Share Postado Março 9, 2010 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kiver Vinicius Postado Março 9, 2010 Denunciar Share Postado Março 9, 2010 (editado) Opa, você precisa fazer essa validação no onload do formulario?Amigo para bloquear você pode usar DOMNesse 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 Março 9, 2010 por Kiver Vinicius Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 9, 2010 Autor Denunciar Share Postado Março 9, 2010 (editado) 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 Março 9, 2010 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kiver Vinicius Postado Março 9, 2010 Denunciar Share Postado Março 9, 2010 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?em vez de <script>document.getElementById('Finalizar').disabled = 'disabled';</script>use <script>document.getElementById('Finalizar').disabled = 'true';</script> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 9, 2010 Autor Denunciar Share Postado Março 9, 2010 (editado) 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 (À 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='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 Março 9, 2010 por Carlos Rocha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kiver Vinicius Postado Março 10, 2010 Denunciar Share Postado Março 10, 2010 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Março 10, 2010 Autor Denunciar Share Postado Março 10, 2010 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 (À 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='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 ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Carlos Rocha
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
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.