none
Codigo behind com javascript não funciona RRS feed

  • 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.

    segunda-feira, 6 de maio de 2013 11:54

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
    segunda-feira, 6 de maio de 2013 18:40

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?

    segunda-feira, 6 de maio de 2013 12:35
  • 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.

    segunda-feira, 6 de maio de 2013 13:12
  • Utiliza o método

    ClientScript.RegisterClientScriptBlock(

    Ao invés do outro.

    segunda-feira, 6 de maio de 2013 13:17
  • 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 ?

    segunda-feira, 6 de maio de 2013 14:36
  • 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
    segunda-feira, 6 de maio de 2013 14:51
  • 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
    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.

    segunda-feira, 6 de maio de 2013 15:20
  • 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
    segunda-feira, 6 de maio de 2013 16:07
  • 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
    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.

    segunda-feira, 6 de maio de 2013 16:30
  • 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.

    Então preciso saber o erro que está dando. Rode sua aplicação no Chrome. Clique com o botão direito, vá em inspecionar elemento. Lá no cantinho inferior direito vai ter um X vermelho (significa que houve erro no JavaScript) clique sobre ele e me diga o que aparece escrito.

    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

    segunda-feira, 6 de maio de 2013 16:36
  • 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>

    segunda-feira, 6 de maio de 2013 16:38
  • Evandro

    Fiz o que você me instruiu e no Chome da esse erro:

    Uncaught TypeError: Cannot set property 'disabled' of null

    segunda-feira, 6 de maio de 2013 16:44
  • Evandro

    Fiz o que você me instruiu e no Chome da esse erro:

    Uncaught TypeError: Cannot set property 'disabled' of null

    Ou seja, não está conseguindo achar o campo. Verificou se os nomes estão corretos ?

    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

    segunda-feira, 6 de maio de 2013 17:03
  • 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">

    segunda-feira, 6 de maio de 2013 17:28
  • Eu tentei colocar minha pagina toda mas não cabe aqui.. m

    Mais se precisar do codido de mais algum controle e so me falar.

    Fico no aguardo.

    Obrigado.

    segunda-feira, 6 de maio de 2013 17:30
  • 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;

    segunda-feira, 6 de maio de 2013 17:38
  • E adiciona esta propriedade na sessão "Page".

    ClientID="Static"

    segunda-feira, 6 de maio de 2013 17:40
  • 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





    • Sugerido como Resposta EvandroAS segunda-feira, 6 de maio de 2013 17:43
    • Editado EvandroAS segunda-feira, 6 de maio de 2013 17:51
    segunda-feira, 6 de maio de 2013 17:43
  • 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.

    segunda-feira, 6 de maio de 2013 17:50
  • 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.

    Você viu meu último post ? Estou explicando certinho o que fazer, amigo...

    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

    segunda-feira, 6 de maio de 2013 17:54
  • 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(&#39;__doPostBack(\&#39;ctl00$MainContent$FormView1$DropDownListCODMAT\&#39;,\&#39;\&#39;)&#39;, 0)" id="MainContent_FormView1_DropDownListCODMAT" disabled="disabled" class="aspNetDisabled" style="color:#3366CC;font-size:9pt;width:134px;">

    segunda-feira, 6 de maio de 2013 17:59
  • 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(&#39;__doPostBack(\&#39;ctl00$MainContent$FormView1$DropDownListCODMAT\&#39;,\&#39;\&#39;)&#39;, 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

    segunda-feira, 6 de maio de 2013 18:16
  • 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

    segunda-feira, 6 de maio de 2013 18:35
  • 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
    segunda-feira, 6 de maio de 2013 18:40
  • Foi o que eu fiz conforme abaixo:

    <

    select name="ctl00$MainContent$FormView1$DropDownListCODCLASSEP" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;ctl00$MainContent$FormView1$DropDownListCODCLASSEP\&#39;,\&#39;\&#39;)&#39;, 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.

    segunda-feira, 6 de maio de 2013 18:50
  • Evandro eu consegui resolver com sua ajuda.

    Obrigado ja marquei sua resposta.

    Muito Obrigado.

    Valew

    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(&#39;__doPostBack(\&#39;ctl00$MainContent$FormView1$DropDownListCODCLASSEP\&#39;,\&#39;\&#39;)&#39;, 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_DropDonwListCODCLASSEP

    Basta 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





    • Sugerido como Resposta EvandroAS segunda-feira, 6 de maio de 2013 19:03
    • Editado EvandroAS segunda-feira, 6 de maio de 2013 19:16
    segunda-feira, 6 de maio de 2013 19:03
  • Ja marquei como resposta.
    segunda-feira, 6 de maio de 2013 19:25