Usuário com melhor resposta
Bloquear campos dentro de uma DIV

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)
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
-
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
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
-
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)
-
-
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
-
-
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)
-
-
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