Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Ajuda com Option da tag SELECT

Galera boa tarde tenho a seguinte duvida no código abaixo

<?php include("cabecalho.php");?>    
    <h1>Cadastro de Cliente</h1>

    <?php 
        if(isset($_POST['submit'])){
            $tipoPessoa = $_POST['tipoPessoa'];
        }
    ?>
    <form action="" method="post">
        <table class="table">    
            <tr>
                <td>Pessoa</td>
                <td >
                    <select name="tipoPessoa">
                        <option value="">Selecione</option>
                        <option value="01">Fisica</option>
                        <option value="02">Juridica</option>
                    </select>
                </td>
                <td>
                    <input class = "btn btn-primary" type="submit" name="submit" value="Ir">
                </td>
            </tr>
    </form>
                <?php 
                    if($tipoPessoa == "01"){
                        include("cliente-form.php");
                    }else if($tipoPessoa == "02"){
                        include("juridica.php");
                    }    
                ?>    
                <tr>
        <td>
            <input class = "btn btn-primary" type="submit" name="cadastrar" value="Cadastrar">
            <input class = "btn btn-primary" type="reset" name="limpar" value="Limpar">
        </td>
    </tr>
        </table>
    </form>
<?php include("rodape.php");?>

Ao selecionar uma das opções "Física" ou "Jurídica" gostaria que a ação fosse disparada sem ter a necessidade de clicar no botão "Ir".. como posso fazer isso? Obrigado..

5 respostas
<?php include("cabecalho.php");?>    
    <h1>Cadastro de Cliente</h1>

    <?php 
        if(isset($_POST['submit'])){
            $tipoPessoa = $_POST['tipoPessoa'];
        }
    ?>
    <form action="" method="post">
        <table class="table">    
            <tr>
                <td>Pessoa</td>
                <td >
                    <select name="tipoPessoa">
                        <option value="">Selecione</option>
                        <option value="01">Fisica</option>
                        <option value="02">Juridica</option>
                    </select>
                </td>
                <td>
                    <input class = "btn btn-primary" type="submit" name="submit" value="Ir">
                </td>
            </tr>
    </form>
                <?php 
                    if($tipoPessoa == "01"){
                        include("cliente-form.php");
                    }else if($tipoPessoa == "02"){
                        include("juridica.php");
                    }    
                ?>    
                <tr>
        <td>
            <input class = "btn btn-primary" type="submit" name="cadastrar" value="Cadastrar">
            <input class = "btn btn-primary" type="reset" name="limpar" value="Limpar">
        </td>
    </tr>
        </table>
    </form>
<?php include("rodape.php");?>

Para fazer isso você tem que usar Javascript, não conheço outro jeito. Adicione o atributo onchange na sua tag <select>, deste modo:

<select onchange="this.form.submit()">
    ...
</select>

Mas nesse caso, como faria o include da pagina conforme o valor que veio do javascript? como no exemplo ele pega o value via POST e faz uma verificação para incluir o formulário.

solução!

Ah, me desculpe, entendi errado a pergunta. Seria um pouco mais complexo então.

Ao clicar na opção que quer, você ainda tem que disparar um evento javascript, mas terá que customizá-lo um pouco. Não manjo tanto de php, mas acho que algo desse gênero funcionaria bem:

<form action="" method="post">
  <table class="table">    
    <tr>
        <td>Pessoa</td>
        <td >
          <select name="tipoPessoa" class="tipoPessoa">
            <option value="">Selecione</option>
            <option value="01">Fisica</option>
            <option value="02">Juridica</option>
          </select>
        </td>
    </tr>
    <tr class="pf hidden">
      <td>
        <?php include("cliente-form.php"); ?>
      </td>
    </tr>
    <tr class="pj hidden">
      <td>
        <?php include("juridica.php"); ?>
      </td>
    </tr>
    <tr>
      <td>
        <input class="btn btn-primary" type="submit" name="submit" value="Enviar formulário">
      </td>
    </tr>
  </table>
</form>
<script type="text/javascript">
  $("select.tipoPessoa").on("change", function() {
    var opcao = $(this).find("option:selected").val();
    if (opcao == "01") {
      $(".pj").remove();
    } else if (opcao == "02") {
      $(".pf").remove();
    }
    $(".pj,.pf").removeClass("hidden");
  });
</script>

O que fiz aqui foi incluir ambos os formulários dentro do seu form em linhas separadas da tabela, pois não sei como está o conteúdo deles. Criei então uma ação que responde quando o usuário seleciona uma das opções do tipo de pessoa, que faz o seguinte:

  1. Lê o valor do tipo de pessoa
  2. Caso seja Físico, remove o formulário de pessoa juídica
  3. Caso seja Jurídico, remove o formulário de pessoa física
  4. Remove a classe hidden (que precisa ser criada e conter o atributo "display:none"), responsável por deixar ambos os formulários ocultos ao carregar a página

PS.: Seu form está com o fechamento duplicado no código original, pode dar problema.

PS2.: Estou supondo que você está utilizando jQuery, mas a tradução para javascript puro pode ser encontrada na web. Se precisar de ajuda nesse ponto, pode pedir aqui também.

Funcionou era isso mesmo.. muito obrigado :)