none
Bloquear campos dentro de uma DIV RRS feed

  • Pergunta

  • Ola, uma pergunta bem simples.

    Tenho diversos campos dentro de uma tabela e a tabela dentro de uma div.

    Como faço para bloquear os campos textbox, radio, combo tudo de uma vez, sem ter que percorrer todos os controles?

    Queria poder colocar uma trava na tabela ou no div., ai se eu clicar em novo, por exemplo, ai liberar os controles.


    Hellmann's (Joviano Pott)

    quinta-feira, 20 de agosto de 2015 01:03

Respostas

  • Você pode utilizar jquery com um seletor e desabilitar todos os controles de uma vez:

    $("#id_da_div :input").attr("disabled", true);

    Se estiver usando WebForms utilize algo mais ou menos assim:

    $("[id *= 'id_da_div'] :input").attr("disabled", true);

    Quando clicar em novo você habilita todos os controles da mesma forma.



    ROBERTOSLJUNIOR

    • Marcado como Resposta Marcos SJ sexta-feira, 21 de agosto de 2015 19:31
    quinta-feira, 20 de agosto de 2015 03:07
  • Ola, como nao tive retorno, fiz diferente o bloqueio dos campos na tela.

    Como utilizo master page. eu ja uso algumas funções que validam a tela filha atraves da MP, coloquei uma rotina dentro da master e essa rotina sendo chamada em uma outra rotina que as paginas filhas leem. Isso funcionou perfeito. Agora so espero que quando colocar online, nao fique lento.

    'Função que muda o status da pagina filha de acordo com o evento. Dentro dela coloquei a nova função de bloqueio. e tudo funcionou perfeitamente, sem que precisasse mexer nas minhas 50 paginas.
    
    Public Sub MUDA_STATUS(ByVal MSG As String)
            lbl_modo.Text = MSG
            If MSG = "Pesquisar..." Then
                LIBERAR_CAMPOS(Controls, False)
            Else
                LIBERAR_CAMPOS(Controls, True)
            End If
        End Sub
    
    
    
     Public Sub LIBERAR_CAMPOS(ByVal oControls As ControlCollection, ByVal LIBERADO As Boolean)
            For Each c As Control In oControls
                If c.HasControls Then LIBERAR_CAMPOS(c.Controls, LIBERADO)
                If TypeOf (c) Is TextBox Then
                    CType(c, TextBox).Enabled = LIBERADO
                ElseIf TypeOf (c) Is DropDownList Then
                    CType(c, DropDownList).Enabled = LIBERADO
                ElseIf TypeOf (c) Is CheckBox Then
                    CType(c, CheckBox).Enabled = LIBERADO
                End If
            Next
        End Sub


    se alguem tiver idieias melhores, sao bem vindas.


    Hellmann's (Joviano Pott)

    • Marcado como Resposta Marcos SJ sexta-feira, 16 de outubro de 2015 17:21
    quinta-feira, 10 de setembro de 2015 00:30

Todas as Respostas

  • Você pode utilizar jquery com um seletor e desabilitar todos os controles de uma vez:

    $("#id_da_div :input").attr("disabled", true);

    Se estiver usando WebForms utilize algo mais ou menos assim:

    $("[id *= 'id_da_div'] :input").attr("disabled", true);

    Quando clicar em novo você habilita todos os controles da mesma forma.



    ROBERTOSLJUNIOR

    • Marcado como Resposta Marcos SJ sexta-feira, 21 de agosto de 2015 19:31
    quinta-feira, 20 de agosto de 2015 03:07
  • Ola roberto. Fiz tudo o que vc mandou pesqquisei mais e mais, ja fazem mais de 3 horas e nao estou consguindo resolver.

    O problema que tenho um master page e updatepanel, entao ele so roda quando carrega a pagina, depois os botoes de novo e cancelar nao fazem mais os evento abaixo. Voce saberia me dizer como contornar isso? ja destrui o google procurando, mas acho que nao encontrei a dica certa.

    $(document).ready(function() {
    $("#CAMPOS_INPUT :input").prop("disabled", true);
                    $("#ctl00_ContentPlaceHolder1_BTN_NOME").click(function (){
                        // habilita o campo 
                        $("#CAMPOS_INPUT :input").prop("disabled", false);
                    });
    
                    $("#ctl00_ContentPlaceHolder1_BTN_CANCELAR").click(function (){
                        // desabilita o campo 
                        $("#CAMPOS_INPUT :input").prop("disabled", true);
                    });
    }

    Se outra pessoa puder dar dicas, aceito.


    Hellmann's (Joviano Pott)

    terça-feira, 25 de agosto de 2015 02:43
  • Opa, ninguem passou por este problema para me ajudar na solução?

    Hellmann's (Joviano Pott)

    quinta-feira, 27 de agosto de 2015 00:00
  • Veja esse documento ele explica:

    https://msdn.microsoft.com/en-us/library/bb383810.aspx?f=255

    <script type="text/javascript">
    
    
    $(document).ready(function(){
      desabilita();
      ...
    });
    
    
    var desabilita(){
     ....
    }
    
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(desabilita);
    </script>


    ROBERTOSLJUNIOR

    quinta-feira, 27 de agosto de 2015 00:18
  • Opa, esse link nao esta abrindo.

    Hellmann's (Joviano Pott)

    quinta-feira, 27 de agosto de 2015 00:35
  • Roberto, nao querendo ser "pidao" mas ja sendo, voce pode analisar meu codigo eme dizer o que esta errado?

    Veja, tenho dois botoes, NOVO e CANCELAR.

    1 - a pagina quando abre, bloqueia os campos. esta correto isso;

    2 - quando clico em NOVO, ele libera os campos, esta correto isso;

    3 - quando clico em CANCELAR, o evento esta bloqueando e ao mesmo tempo desbloqueando. Aqui eu vejo o problema. Veja me codigo.

    <script type="text/javascript">
    
            $(document).ready(function () {
            //Linha usada para bloquear os campos quando abrir a pagina
                $("#CAMPOS_INPUT :input").prop("disabled", true);
            });
    
            function jsFunctions() {
                $("#ctl00_ContentPlaceHolder1_BTN_CANCELAR").click(function () {
                    // desabilita o campo 
                    $("#CAMPOS_INPUT :input").prop("disabled", true);
                    // bloquear
                });
            };
    
            function jsFunctions2() {
                $("#ctl00_ContentPlaceHolder1_BTN_NOME").click(function () {
                    // habilita o campo 
                    $("#CAMPOS_INPUT :input").prop("disabled", false);
                });
            };
    
        </script>
    
    .....
    
    
    <body>
        <form id="form1" defaultbutton="Button1" runat="server">
            <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnableScriptGlobalization="true"  EnableScriptLocalization="true">
           </asp:ToolkitScriptManager>
    
           <script type="text/javascript" language="javascript">
                 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(jsFunctions);
            </script>
    .......

    Voce consegue me dizer onde possa estar o problema numero 3?


    Hellmann's (Joviano Pott)

    quinta-feira, 27 de agosto de 2015 01:57
  • Boa noite!

    Senhores, alguem conseguiu ver onde possa estar o problema no meu codigo?


    Hellmann's (Joviano Pott)

    terça-feira, 1 de setembro de 2015 23:18
  • Ola, como nao tive retorno, fiz diferente o bloqueio dos campos na tela.

    Como utilizo master page. eu ja uso algumas funções que validam a tela filha atraves da MP, coloquei uma rotina dentro da master e essa rotina sendo chamada em uma outra rotina que as paginas filhas leem. Isso funcionou perfeito. Agora so espero que quando colocar online, nao fique lento.

    'Função que muda o status da pagina filha de acordo com o evento. Dentro dela coloquei a nova função de bloqueio. e tudo funcionou perfeitamente, sem que precisasse mexer nas minhas 50 paginas.
    
    Public Sub MUDA_STATUS(ByVal MSG As String)
            lbl_modo.Text = MSG
            If MSG = "Pesquisar..." Then
                LIBERAR_CAMPOS(Controls, False)
            Else
                LIBERAR_CAMPOS(Controls, True)
            End If
        End Sub
    
    
    
     Public Sub LIBERAR_CAMPOS(ByVal oControls As ControlCollection, ByVal LIBERADO As Boolean)
            For Each c As Control In oControls
                If c.HasControls Then LIBERAR_CAMPOS(c.Controls, LIBERADO)
                If TypeOf (c) Is TextBox Then
                    CType(c, TextBox).Enabled = LIBERADO
                ElseIf TypeOf (c) Is DropDownList Then
                    CType(c, DropDownList).Enabled = LIBERADO
                ElseIf TypeOf (c) Is CheckBox Then
                    CType(c, CheckBox).Enabled = LIBERADO
                End If
            Next
        End Sub


    se alguem tiver idieias melhores, sao bem vindas.


    Hellmann's (Joviano Pott)

    • Marcado como Resposta Marcos SJ sexta-feira, 16 de outubro de 2015 17:21
    quinta-feira, 10 de setembro de 2015 00:30