Formulário é mato na internet. Todo site tem. Seja um formulário de busca, de cadastro, de newsletter, de comentários, de pedidos, não tem jeito.
Então não pode faltar os controles em javascript para manipular estes formulários. E um pedido recorrente do pessoal é a opção de habilitar e desabilitar alguns campos do formulário de acordo com uma escolha.
No exemplo abaixo, vou usar um caso muito comum, para que todos possam entender e adaptar a cada necessidade.
No código temos um formulário de cadastro, com campos de pessoa fÃsica e pessoa jurÃdica, logo, teremos campos diferentes para o mesmo cadastro.
Eu coloquei uma opção em radio button, pro usuário escolher se deseja cadastrar como pessoa fÃsica ou jurÃdica, vejamos o código:
<html>
<head>
<title>teste</title>
<script type="text/javascript">
<!--
function habilita( tipo_pessoa ) {
if ( tipo_pessoa == "fisica" ) {
document.getElementById("edt_nome").disabled=false;
document.getElementById("edt_cpf").disabled=false;
document.getElementById("edt_razao").disabled=true;
document.getElementById("edt_cnpj").disabled=true;
} else if ( tipo_pessoa == "juridica" ) {
document.getElementById("edt_nome").disabled=true;
document.getElementById("edt_cpf").disabled=true;
document.getElementById("edt_razao").disabled=false;
document.getElementById("edt_cnpj").disabled=false;
}
}
//-->
</script>
</head>
<body>
<form name="formulario" action="teste.html" method="POST">
<p>
<input type="radio" name="op_pessoa" id="op_pessoa" value="fisica" onclick="javascript:habilita(this.value);" CHECKED>pessoa fisica
<input type="radio" name="op_pessoa" id="op_pessoa" value="juridica" onclick="javascript:habilita(this.value);">pessoa juridica
</p>
<p><label>nome:</label><input type="text" name="edt_nome" id="edt_nome"></p>
<p><label>cpf:</label><input type="text" name="edt_cpf" id="edt_cpf"></p>
<p><label>razao social:</label><input type="text" name="edt_razao" id="edt_razao" disabled></p>
<p><label>cnpj:</label><input type="text" name="edt_cnpj" id="edt_cnpj" disabled></p>
<p><label>endereco:</label><input type="text" name="edt_endereco" id="edt_endereco"></p>
<p><label>telefone:</label><input type="text" name="edt_phone" id="edt_phone"></p>
<p><input type="submit" value="enviar"><input type="reset" value="limpar"></p>
</form>
</body>
</html>
Aparentemente bem simples. Quem dispara a ação é o radio button no evento onclick, passando o value do próprio.
Já na função é verificado qual o valor do radio, se for pessoa fÃsica, desabilita os campos de pessoa jurÃdica e habilita os de pessoa fÃsica. E se o valor for de pessoa jurÃdica, faz o inverso. Simples assim.
Outras opções que você pode estar incluindo ai, é o de limpar os campos sempre que fizer a mudança. E também pode pintar o fundo (background-color) dos campos (inputs) que ficarão desabilitados.
Alguns navegadores já mudam a cor do fundo dos campos desabilitados. Mas testes realizados no firefox 3 e no IE 8 mostraram que os campos continuam com a cor branca, mudando apenas o contorno (a borda) deles. Esse código também foi testado no chrome.
Sucesso!
Loading...
Ai amigão preciso de uma tela tipo a do uol que fica anunciando as noticias principais uma por uma automaticamente você tem um codigo que faça isso?
Prezado Mario,
De todos os tutoriais e ajuda que encontrei na web, foi tão eficaz quanto este que você publicou, parabéns e muito obrigado.
No entanto, você disse que seri apossÃvel limpar os campos e mudar a cor dos mesmos, você poderia nos explicar como fazer isto?
Sou novato na área e preciso de ajuda.
valew Wellington,
da uma olhada nesse post, ele eh bem mais completo.
vai ter o codigo deste exemplo, junto com o q comentei q poderia ser feito e ainda mais.
http://www.mariosam.com/javascript/validar-formulario-basico
sucesso ai.
Kra perfect, tava procurando e finalmente achei algo que funcione, parabéns =)
MarioSAM, eu estou utilizando o Magento e sou novato no mesmo e em programação, gostaria de saber se este codigo funciona no magento e como poderia efetuar essas alterações no magento, você está de parabéns com seus posts! Se puder me ajudar quanto a isto, estarei muito grato! grade abraço