Ocultar / Mostrar div en el cambio seleccione la opción de no trabajar

votos
0

Estoy tratando de ocultar / mostrar mis divs contra el selecto con id OpcoesCampos, pero este código no funciona. ¿Puede alguien explicar por qué mi y dame un poco de ayuda? Por cierto, es que posible llamar a un método de controlador frente a los valores SELECT en Selecciona / 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 el 18/12/2018 a las 11:14
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

Aquí está la solución.

$('#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();
        }
    }

Problema encontrado -> e.preventDefault () tiene que llamar después de la llamada de función (MostraDropDownList).

y usted tiene que utilizar en lugar de este uso 'myFormType' para pasar parámetros.

Gracias.

Respondida el 18/12/2018 a las 11:34
fuente por usuario

votos
0

He fijado algunos de los problemas en el código. Ahora bien, no le dará errores y se puede modificar html como desee. También mostrar y ocultar funcionará.

No hay necesidad de pasar el parámetro adicional con la llamada a la función cada vez. La mejor manera es llamar e.stopPropagation (); después de la llamada a la función.

<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>
Respondida el 18/12/2018 a las 11:44
fuente por usuario

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