Usuário com melhor resposta
Codigo behind com javascript não funciona

Pergunta
-
ClientScript.RegisterStartupScript(
this.GetType(),"",
"<script type=\"text/javascript\">"+"var result = confirm(\"Confirma?\");"+
"if(result){"+"document.getElementById('DropDownListCODMAT').disabled = false;"+
"document.getElementById('DropDownListCODSCH').disabled = false;"+
"document.getElementById('DropDonwListCODCLASSEP').disabled = false;"+"}"+
"else {"+"document.getElementById('DropDownListCODMAT').disabled = true;"+
"document.getElementById('DropDownListCODSCH').disabled = true;"+
"document.getElementById('DropDonwListCODCLASSEP').disabled = true;"+"}"+
"</script>");
Dessa forma não mostra a messagem, mas mesmo que eu clico em OK ou Cancelar não habilita meus controles acima.
O que esta errado no meu codigo acima ?
Obrigado pela ajuda, se alguem puder me ajudar completar essa lacuna eu agradeço muito.
Aguardo Retorno.
Respostas
-
O nome dele está correto ? Caso esteja, vá denovo em "exibir código fonte" dê um ctrl+f e procure pelo nome DropDonwListCODCLASSEP e verifique se o ID gerado é mesmo o MainContent_FormView1_DropDonwListCODCLASSEP
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh- Marcado como Resposta ricardoti2012 segunda-feira, 6 de maio de 2013 19:02
Todas as Respostas
-
Quando diz: "Dessa forma não mostra a messagem, mas mesmo que eu clico em OK ou Cancelar não habilita meus controles acima."
Seu problema está em mostrar o Confirm, ou ele está sendo exibido, porém, o comportamento de habilitar/desabilitar seus componentes que não está funcionando?
No caso, quando você clicar no OK os componentes serão habilitados e quando clicar no Cancel serão desabilitados, seria isso mesmo que você quer?
-
Diego a mensagem esta aparecendo sim.
O que esta faltando é o que você escreveu
"quando você clicar no OK os componentes serão habilitados e quando clicar no Cancel serão desabilitados"
Pq o meu codigo não esta funcionando ?
Fico no aguardo.
Obrigado.
-
-
Coloquei da forma abaixo conforme orientação do Marcos, mas continua na mesma.
Da a mesagem, mas mesmo que eu clique em OK ou cancelar não habilita ou desabilita os controles.
ClientScript.RegisterClientScriptBlock(
this.GetType(),"",
"<script type=\"text/javascript\">"+ "var result = confirm(\"Confirma?\");"+
"if(result){"+ "document.getElementById('DropDownListCODMAT').disabled = false;"+
"document.getElementById('DropDownListCODSCH').disabled = false;"+
"document.getElementById('DropDonwListCODCLASSEP').disabled = false;"+ "}"+
"else {"+ "document.getElementById('DropDownListCODMAT').disabled = true;"+
"document.getElementById('DropDownListCODSCH').disabled = true;"+
"document.getElementById('DropDonwListCODCLASSEP').disabled = true;"+ "}"+
"</script>");
Alguem pode me ajudar ?
-
Você está usando Master Page ? A página aonde é chamada essa função é uma página filha ? Pois se for, você tem que adicionar o nome do seu content place holder antes do nome do campo. Por ex: ctl00_ContentPlaceHolder1_DropDownListCODMAT
Lembrando que esse nome varia de acordo com o nome do seu contentPlaceHolder.Só pra ter certeza. Você passa alguns disabled = true e outros false. Você sabe que o True desabilita e o False não, certo ?
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh
- Editado EvandroAS segunda-feira, 6 de maio de 2013 14:59
-
Fiz da seguinte forma e funcionou perfeitamente. Código C#:
ClientScript.RegisterStartupScript(this.GetType(), "", "<script type=\"text/javascript\">desabilita()</script>");
Na página aspx você irá criar a função e colocar o código nela:
<script type="text/javascript"> function desabilita() { var result = confirm("Confirma?"); if (result) { document.getElementById('ctl00_ContentPlaceHolder1_txtNome').disabled = true;
document.getElementById('ctl00_ContentPlaceHolder1_txtEmail').disabled = true; } } </script>
Perceba que passei o nome do ContentPlaceHolder antes do nome do meu campo. Se estiver utilizando Master page dê um inspecionar elemento no seu navegador (ou vá em exibir código HTML) e veja qual o nome do campo gerado.
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh- Sugerido como Resposta EvandroAS segunda-feira, 6 de maio de 2013 15:02
-
Eu não estou usando MasterPage.
Tanto que no meu codigo C# da minha paginas.aspx.cs reconhe os comandos enable =true do meu controle normalmente.
O problem esta no meu codigo behind do meu javascript abaixo:
ClientScript.RegisterStartupScript(
this.GetType(),"",
"<script type=\"text/javascript\">"+ "var result = confirm(\"Confirma?\");"+
"if(result){"+ "document.getElementById('DropDownListCODMAT').disabled = false;"+
"document.getElementById('DropDownListCODSCH').disabled = false;"+
"document.getElementById('DropDonwListCODCLASSEP').disabled = false;"+ "}"+
"else {"+ "document.getElementById('DropDownListCODMAT').disabled = true;"+
"document.getElementById('DropDownListCODSCH').disabled = true;"+
"document.getElementById('DropDonwListCODCLASSEP').disabled = true;"+ "}"+
"</script>");
A mensagem ja esta aparecendo so falta habilitar e desabilitar os meu controles.
Alguem pode me ajudar.
Obrigado.
-
Amigo, faça como eu mostrei no post ali acima do seu que eu sugeri como resposta que vai funcionar, ok ?
Mais uma coisa, no seu código se o usuário clica em OK você desabilita e se ele clica em cancelar você habilita. É isso mesmo que quer fazer ? Se não for, basta dar disabled = true dentro do IF e disabled = false no ELSE (o contrário do que você faz agora)
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh
- Editado EvandroAS segunda-feira, 6 de maio de 2013 16:11
-
Leia o meu outro post primeiro, caso sua lógica esteja certa (OK desabilita e cancelar habilita). Faça dessa forma:
No código C#:
ClientScript.RegisterStartupScript(this.GetType(), "", "<script type=\"text/javascript\">desabilita()</script>");
No HTML:
<script type="text/javascript"> function desabilita() { var result = confirm("Confirma?"); if (result) { document.getElementById('DropDownListCODMAT').disabled = false; document.getElementById('DropDownListCODSCH').disabled = false; document.getElementById('DropDonwListCODCLASSEP').disabled = false; } else { document.getElementById('DropDownListCODMAT').disabled = true; document.getElementById('DropDownListCODSCH').disabled = true; document.getElementById('DropDonwListCODCLASSEP').disabled = true; } } </script>
Caso você queira habilitar no ok e desabilitar no cancelar, faça assim:
<script type="text/javascript"> function desabilita() { var result = confirm("Confirma?"); if (result) { document.getElementById('DropDownListCODMAT').disabled = true; document.getElementById('DropDownListCODSCH').disabled = true; document.getElementById('DropDonwListCODCLASSEP').disabled = true; } else { document.getElementById('DropDownListCODMAT').disabled = false; document.getElementById('DropDownListCODSCH').disabled = false; document.getElementById('DropDonwListCODCLASSEP').disabled = false; } } </script>
Agora eu fiz pra você, amigo. Impossível ajudar mais que isso. Abraços
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh- Sugerido como Resposta EvandroAS segunda-feira, 6 de maio de 2013 16:16
-
Obrigado Evandro Aguiar
Eu coloquei da forma que vc colocou mas mesmo assim não esta funcionando.
So tem um detalhe após a mensagem abaixo:
ClientScript.RegisterStartupScript(
this.GetType(), "", "<script type=\"text/javascript\">desabilita()</script>");
Eu limpo um campo obrigatorio para poder parar a aplicação.
DIAM1TextBox.Text =
"";
Tem algo a ver ? Esta aparecendo a mensagem mas nem habilita ou desabilita os controles.
Ja analisei o codigo inteiro pra ver o que esta acontecendo mas não consigo resolver esse problema.
Por favor me ajudem.
Obrigado.
-
Obrigado Evandro Aguiar
Eu coloquei da forma que vc colocou mas mesmo assim não esta funcionando.
So tem um detalhe após a mensagem abaixo:
ClientScript.RegisterStartupScript(
this.GetType(), "", "<script type=\"text/javascript\">desabilita()</script>");
Eu limpo um campo obrigatorio para poder parar a aplicação.
DIAM1TextBox.Text =
"";
Tem algo a ver ? Esta aparecendo a mensagem mas nem habilita ou desabilita os controles.
Ja analisei o codigo inteiro pra ver o que esta acontecendo mas não consigo resolver esse problema.
Por favor me ajudem.
Obrigado.
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh -
Estou usando o Internet Explorer 9 e não esta dando erro.
Segue abaixo o codigo de um dos controles quem sabe assim você consiga achar algum problema.
<
asp:DropDownListID="DropDownListCODMAT"runat="server"Enabled="false"
ForeColor="#3366CC"Width="134px"Font-Size="9pt"DataTextField="CODIGO"
DataValueField="CODIGO"DataSourceID="SqlDataSourceCODMAT"SelectedValue='<%#Bind("CODMAT") %>'
onselectedindexchanged="DropDownListCODMAT_SelectedIndexChanged"
AutoPostBack="true"ondatabound="DropDownListCODMAT_DataBound">
</asp:DropDownList>
<asp:SqlDataSourceID="SqlDataSourceCODMAT"runat="server"
ConnectionString="<%$ConnectionStrings:connectionString %>"
SelectCommand="SELECT [CODIGO] FROM [MATERIALTUBULACAO] ORDER BY [CODIGO]">
</asp:SqlDataSource>
-
-
Evandro
Fiz o que você me instruiu e no Chome da esse erro:
Uncaught TypeError: Cannot set property 'disabled' of null
Faça o seguinte, me passe o código ASPX dessa página.Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh -
Eu coloquei acima o codigo aspx do meu controle.
Vou colocar novamente:
Vc tinha comentado se eu estav usando Masterpage e estou sim conforme abaixo, mas não entendo porque isso tem a ver ja que eu trabalho com os controles na pagina do codigo behind sem referenciar minhas masterpage. Bom como e a 1 vez que uso javascript pode ser isso.
Abaixo minha masterpage:
<%
@PageTitle="Cadastro de Spool"Language="C#"MasterPageFile="~/Site.Master"AutoEventWireup="true"
CodeFile
="~/Spool.aspx.cs"Inherits="WebApplication1.Spool"%>
<
asp:ContentID="Content1"ContentPlaceHolderID="HeadContent"runat="server">
-
-
Faz o seguinte companheiro:
Cola esse seu script que vc adiciona dinamicamente no html direto. Cola ele no fim da tag "body" do html e não na sessão "head".
Carregue apágina e veja se o script dispará conforme o esperado. Senão, poste o que acontece;
-
-
Vc tinha comentado se eu estav usando Masterpage e estou sim conforme abaixo
Então é isso, amigo. Você tem duas opções:
Coloque o ClientIdMode como Static em sua página na diretiva Page. Da seguinte forma:
<%@ Page ClientIDMode="Static" Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="sua_pagina.aspx.cs" Inherits="Site.sua_pagina" %>
Ou rode sua aplicação, clice com o botão direito e vá em "Exibir código fonte da página" procure seu dropdown e verá que o nome estará mais ou menos assim: ctl00_ContentPlaceHolder1_DropDownListCODMAT
É esse o nome que você terá que usar no código JavaScript. Ok ?
Se tivesse me falado antes, já teriamos resolvido esse problema há um bom tempo. :)
Abraço
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh
-
Desculpa Marcos mas não entendi nada do que vc postou.
Ja que meu javascript ja esta na minha pagina.aspx e estou chamando ela pelo codigo behind e esta funcionando.
O problema que esta ocorrendo e que não esta encontrando os controles conforme postei acima.
Então para resolver meu problema eu preciso saber qual o motivo de não estar encontrando meus controles.
E espero que alguem possa me ajudar. Eu ja coloquei quase todo meu codigo tanto aspx quanto asp.cs para poderem me ajudar.
Mas se precisar de mais algum codigo eu posto aqui sem problemas.
So espero que alguem possa me ajudar.
Desde ja agradeço o apoio de todos.
E espero resolver esse problema.
Fico no aguardo.
Obrigado.
-
Desculpa Marcos mas não entendi nada do que vc postou.
Ja que meu javascript ja esta na minha pagina.aspx e estou chamando ela pelo codigo behind e esta funcionando.
O problema que esta ocorrendo e que não esta encontrando os controles conforme postei acima.
Então para resolver meu problema eu preciso saber qual o motivo de não estar encontrando meus controles.
E espero que alguem possa me ajudar. Eu ja coloquei quase todo meu codigo tanto aspx quanto asp.cs para poderem me ajudar.
Mas se precisar de mais algum codigo eu posto aqui sem problemas.
So espero que alguem possa me ajudar.
Desde ja agradeço o apoio de todos.
E espero resolver esse problema.
Fico no aguardo.
Obrigado.
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh -
Evandro eu não tinha visto seu post pois estava respondendo a ultima interação.
Então eu fiz o que vc colocou em exibir codigo fonte e apareceu da seguinte forme um dos codigos. Mas não sei qual deles devo colocar no meu javascript
<
select name="ctl00$MainContent$FormView1$DropDownListCODMAT" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$FormView1$DropDownListCODMAT\',\'\')', 0)" id="MainContent_FormView1_DropDownListCODMAT" disabled="disabled" class="aspNetDisabled" style="color:#3366CC;font-size:9pt;width:134px;">
-
Evandro eu não tinha visto seu post pois estava respondendo a ultima interação.
Então eu fiz o que vc colocou em exibir codigo fonte e apareceu da seguinte forme um dos codigos. Mas não sei qual deles devo colocar no meu javascript
<
select name="ctl00$MainContent$FormView1$DropDownListCODMAT" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$FormView1$DropDownListCODMAT\',\'\')', 0)" id="MainContent_FormView1_DropDownListCODMAT" disabled="disabled" class="aspNetDisabled" style="color:#3366CC;font-size:9pt;width:134px;">
É esse aqui: id="MainContent_FormView1_DropDownListCODMAT"
Você terá que colocar "MainContent_FormView1_" antes dos nomes dos campos no Javascript. Ficaria assim:
document.getElementById('MainContent_FormView1_DropDownListCODSCH').disabled = false; document.getElementById('MainContent_FormView1_DropDonwListCODCLASSEP').disabled = false;
E assim por diante. Entendeu ?
Mas seria mais fácil colocar o ClientIDMode="Static" conforme eu disse anteriormente.
Abraço
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh -
Evandro falta pouco.
Colcoquei dessa forma abaixo:
if
(result)
{
document.getElementById(
'MainContent_FormView1_DropDownListCODMAT').disabled = false;
document.getElementById(
'MainContent_FormView1_DropDownListCODSCH').disabled = false;
document.getElementById(
'MainContent_FormView1_DropDonwListCODCLASSEP').disabled = false;
}
else
{
document.getElementById(
'MainContent_FormView1_DropDownListCODMAT').disabled = true;
document.getElementById(
'MainContent_FormView1_DropDownListCODSCH').disabled = true;
document.getElementById(
'MainContent_FormView1_DropDonwListCODCLASSEP').disabled = true;
}
Porem o ultimo controle DropDownListCODCLASSEP não esta funcionando o demais estão. Eu não entendi o porque sendo que ele esta dentro do mesmo MainContent_FormView1.
Você sabe o que pode ser ?
Fico no aguardo.
Muito Obrigado
-
O nome dele está correto ? Caso esteja, vá denovo em "exibir código fonte" dê um ctrl+f e procure pelo nome DropDonwListCODCLASSEP e verifique se o ID gerado é mesmo o MainContent_FormView1_DropDonwListCODCLASSEP
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh- Marcado como Resposta ricardoti2012 segunda-feira, 6 de maio de 2013 19:02
-
Foi o que eu fiz conforme abaixo:
<
select name="ctl00$MainContent$FormView1$DropDownListCODCLASSEP" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$FormView1$DropDownListCODCLASSEP\',\'\')', 0)" id="MainContent_FormView1_DropDownListCODCLASSEP" disabled="disabled" class="aspNetDisabled" style="color:#3366CC;font-size:9pt;width:80px;">
Agora fiquei sem entender pois pelo o que stou vendo esta igual.
Fico no aguardo.
Obrigado.
-
-
Foi o que eu fiz conforme abaixo:
<
select name="ctl00$MainContent$FormView1$DropDownListCODCLASSEP" onchange="javascript:setTimeout('__doPostBack(\'ctl00$MainContent$FormView1$DropDownListCODCLASSEP\',\'\')', 0)" id="MainContent_FormView1_DropDownListCODCLASSEP" disabled="disabled" class="aspNetDisabled" style="color:#3366CC;font-size:9pt;width:80px;">
Agora fiquei sem entender pois pelo o que stou vendo esta igual.
Fico no aguardo.
Obrigado.
Na verdade o nome está errado, amigo. Perceba:
MainContent_FormView1_DropDownListCODCLASSEP
MainContent_FormView1_DropDonwListCODCLASSEPBasta corrigir o seu JavaScript :)
Evandro Aguiar
http://agenciawebpro.com.br
Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh
-