Hide / Show div na escolha Troca de opção não funciona

votos
0

Eu estou tentando ocultar / mostrar meus div é contra a seleção com id OpcoesCampos mas esse código não está funcionando. Alguém pode explicar o meu por que e me dar alguma ajuda? BTW, é que possível chamar um método de controle contra os valores selecionados no seleciona / entradas?

<body class=img-main style=background-image: url(https://images.pexels.com/photos/34578/pexels-photo.jpg?cs=srgb&dl=blogging-business-coding-34578.jpg&fm=jpg); background-size: cover;>
    <h2 style=color:white;> Lista de Estágios/Projetos </h2>
    <div class=panel panel-primary>
        <div class=panel-heading>
            <select class=form-control id=OpcoesCampos>
                <option>Selecione o filtro</option>
                <option>Propostas Ativas</option>
                <option>Localização</option>
                <option>Ano/Semestre</option>
            </select>
            <input id=Localização type=text>
            <div class=form-group id=Ano>
                <div class=col-md-10>
                      // Some options inside here
                </div>
            </div>
            <div class=form-group id=Semestre>
                <div class=col-md-10>
                      // Some options inside here
                </div>
            </div>
        </div>
        <div class=panel-body>
            // Just a table with content inside here
            <p>
                @Html.ActionLink(Adicionar Projeto/Estágio, Create)
            </p>
        </div>
    </div>

@section Scripts {
    @Scripts.Render(~/bundles/jqueryval)
    <script type=text/javascript>
        $('#Localização').hide();
        $('#Ano').hide();
        $('#Semestre').hide();
                $(function () {
                    $('#OpcoesCampos').change(function () {
                        e.preventDefault()
                        MostraDropDownList($(this).val());
                    });
                });

        function MostraDropDownList(this) {
            if (myFormType == 'Propostas Ativas') {
                $('#Localização').hide();
                $('#Ano').hide();
                $('#Semestre').hide();
                e.stopPropagation();
            }
            else if (myFormType == 'Localização') {
                $('#Localização').show();
                $('#Ano').hide();
                $('#Semestre').hide();
                e.stopPropagation();
            }
            else if (myFormType == Ano/Semestre) {
                $('#Localização').hide();
                $('#Ano').show();
                $('#Semestre').show();
                e.stopPropagation();
            }
        }
    </script>
}
 </body>
Publicado 18/12/2018 em 11:14
fonte usuário
Em outras línguas...                            


2 respostas

votos
0

Aqui está a solução.

$('#Localização').hide();
    $('#Ano').hide();
    $('#Semestre').hide();
            $(function () {
                $('#OpcoesCampos').change(function (e) {                        
                  MostraDropDownList($(this).val(),e);
                  e.preventDefault();
                });
            });

    function MostraDropDownList(myFormType,e) {
        if (myFormType == 'Propostas Ativas') {
            $('#Localização').hide();
            $('#Ano').hide();
            $('#Semestre').hide();
            e.stopPropagation();
        }
        else if (myFormType == 'Localização') {
            $('#Localização').show();
            $('#Ano').hide();
            $('#Semestre').hide();
            e.stopPropagation();
        }
        else if (myFormType == "Ano/Semestre") {
            $('#Localização').hide();
            $('#Ano').show();
            $('#Semestre').show();
            e.stopPropagation();
        }
    }

Edição encontrada -> e.preventDefault () você tem que chamar após a chamada de função (MostraDropDownList).

E você tem que usar em vez deste uso 'myFormType' para passar parâmetros.

Obrigado.

Respondeu 18/12/2018 em 11:34
fonte usuário

votos
0

Fixei alguns dos problemas em seu código. Agora não vai dar-lhe os erros e você pode modificar o seu html como você quer. Também mostrar e esconder vai funcionar.

Não há necessidade de passar parâmetro extra com a chamada de função de cada vez. A melhor maneira é chamar e.stopPropagation (); após a chamada de função.

<html>
<head></head>
<body class="img-main" style="background-image: url(https://images.pexels.com/photos/34578/pexels-photo.jpg?cs=srgb&dl=blogging-business-coding-34578.jpg&fm=jpg); background-size: cover;">
    <h2 style="color:white;"> Lista de Estágios/Projetos </h2>
    <div class="panel panel-primary">
        <div class="panel-heading">
            <select class="form-control" id="OpcoesCampos">
                <option>Selecione o filtro</option>
                <option>Propostas Ativas</option>
                <option>Localização</option>
                <option>Ano/Semestre</option>
            </select>
            <input id="Localização" type="text">
            <div class="form-group" id="Ano">
                <div class="col-md-10">
                      <!--  Some options inside here -->
                </div>
            </div>
            <div class="form-group" id="Semestre">
                <div class="col-md-10">
                      <!-- // Some options inside here -->
                </div>
            </div>
        </div>
        <div class="panel-body">
            <!-- // Just a table with content inside here -->
            <p>

            </p>
        </div>
    </div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript">
        $('#Localização').hide();
        $('#Ano').hide();
        $('#Semestre').hide();

        function MostraDropDownList(myFormType) {
            if (myFormType == 'Propostas Ativas') {
                $('#Localização').hide();
                $('#Ano').hide();
                $('#Semestre').hide();
            }
            else if (myFormType == 'Localização') {
                $('#Localização').show();
                $('#Ano').hide();
                $('#Semestre').hide();
            }
            else if (myFormType == "Ano/Semestre") {
                $('#Localização').hide();
                $('#Ano').show();
                $('#Semestre').show();
            }
        }
        $(function () {
            $('#OpcoesCampos').change(function(e) {
                e.preventDefault();
                MostraDropDownList($(this).val());
                e.stopPropagation();
            });
        });
    </script>
 </body>
 </html>
Respondeu 18/12/2018 em 11:44
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more