none
Função javascript parou de funcionar RRS feed

  • Pergunta

  • Eu tenho uma função javascript que funcionava perfeitamente até eu alterar o controle de DropDownList para um controle AjaxComboBox.

    Porem eu mantive o mesmo nome do id do controle, mas mesmoa asssim ele parou de funcionar.

    Alguem pode me ajudar ?

    <script type="text/javascript">

                     function desabilita()

                      {

                         var result = confirm("Material fora da Especificação, você quer cadastrar ?");

                         if (result)

                         {

                             document.getElementById('MainContent_FormView1_DropDownListCODMAT').disabled = false;

                             document.getElementById('MainContent_FormView1_DropDownListCODSCH').disabled = false;

                             document.getElementById('MainContent_FormView1_DropDownListCODCLASSEP').disabled = false;

                            

                         }

                         else

                         {

                             document.getElementById('MainContent_FormView1_DropDownListCODMAT').disabled = true;

                             document.getElementById('MainContent_FormView1_DropDownListCODSCH').disabled = true;

                             document.getElementById('MainContent_FormView1_DropDownListCODCLASSEP').disabled = true;

                         }

                     }

                 </script>

    terça-feira, 11 de junho de 2013 15:48

Respostas

Todas as Respostas

  • Olá,

    Tente atribuir o id do componente desta maneira:

    var meuTextbox =  document.getElementById('<%= txtCliente.ClientID %>');

    Com esta técnica ele pega o id do componente em tempo de execução e atribui no javascript, colocando o id que sera renderizado para o navegador.

    Vitor Mendes | http://www.vitormendes.com.br/

    "Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)

    terça-feira, 11 de junho de 2013 16:48
  • Primeiramente evite colocar o nome literal dos seus controles. Muita gente utiliza a técnica de olhar o código fonte gerado, pegar o id do controle e colocar em suas funções javascript. Evite isso.

    Para que voce garanta que seu código funcione corretamente com o id do controle, recupere o id do controle pelo proprio Asp.Net.

    No seu código voce pode recuperar o id conforme mostrado abaixo:

    document.getElementById('<%= this.DropDownListCODCLASSEP.ClientID %>').disabled = true;

    Segundo, se voce utiliza algum framework javascript, como o jQuery, por exemplo, utilize os seletores para garantir maior compatibilidade entre navegadores.

    Exemplo do seu código modificado:

    // Desabilitar
    jQuery('#<%= this.DropDownListCODCLASSEP.ClientID %>').attr("disabled", "disabled");
    
    // Habilitar
    jQuery('#<%= this.DropDownListCODCLASSEP.ClientID %>').removeAttr("disabled");

    Finalmente, para podermos ver exatamente o que está acontecendo, coloque tambem o HTML do seu controle.

    Abraços


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    terça-feira, 11 de junho de 2013 16:56
  • Primeiro obrigado por responder.

    Aqui mesmo no forum me indicaram a pegar o id pelo codigo fonte e foi o que eu estava tentando e não estava dando certo. Porem não dava erro, mas não funcionava.

    Com a resposta de vocês eu tentei dessa forma e ja deu erro na abertura da pagina.


    Server Error in '/' Application.



    Compilation Error

    Description:
    An error occurred during the compilation of a resource required to service
    this request. Please review the following specific error details and modify your
    source code appropriately.

    Compiler Error Message: CS1061:
    'ASP.spool_aspx' does not contain a definition for 'DropDownListCODCLASSEP' and
    no extension method 'DropDownListCODCLASSEP' accepting a first argument of type
    'ASP.spool_aspx' could be found (are you missing a using directive or an
    assembly reference?)

    Source Error:
    Line 380:                     if (result) 
    Line 381:                     {
    Line 382:                         document.getElementById('<%= this.DropDownListCODCLASSEP.ClientID %>').disabled = false;
    Line 383:                         document.getElementById('MainContent_FormView1_DropDownListCODMAT').disabled = false;
    Line 384:                         document.getElementById('MainContent_FormView1_DropDownListCODSCH').disabled = false;

    terça-feira, 11 de junho de 2013 17:26
  • Eu tentei tirar o this igual foi post tambem e da mesma forma da erro.

    Por favor senhores assim que puderem favor responder.

    Fico no aguardo.

    Obrigado.

    terça-feira, 11 de junho de 2013 17:27
  • Veja o nome do seu controle no html que é gerado depois que a página é renderizada.
    • Marcado como Resposta ricardoti2012 quinta-feira, 13 de junho de 2013 10:32
    terça-feira, 11 de junho de 2013 17:59
  • Eu analisei aqui o codigo fonte html e verifiquei que tem o controle ComboBox para ser habilitado e desabilitado tem que ser tratado das 2 formas abaixo:

    document.getElementById('MainContent_FormView1_DropDownListCODCLASSEP_DropDownListCODCLASSEP_TextBox').disabled = true;

                             document.getElementById('MainContent_FormView1_DropDownListCODCLASSEP_DropDownListCODCLASSEP_Button').disabled = true;

    Acima esta a condição para habilitar e para desabilitar coloque false.

    Porem o comportamento desse controleAjax esta estranho. Pois quando eu clico em algum item desse controle ele volta a ficar desabilitado dando reflesh na pagina. E quando era o controle DropDownList dava tambem o reflesh mais eu habilitava ele no evento seletedIndex, mas nem assim esta funcionando.

    De forma que se eu escolho um item ele fica desabilitado. Qual evento devo acionar neste controle para habilitar ele novamente ?

    terça-feira, 11 de junho de 2013 18:30
  • O javascript para funcionar corretamente, vai procurar pelo controle chamado DropDownListCODCLASSEP. Este controle tem que existir na mesma pagina onde se encontra o javascript.

    Abraços


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    terça-feira, 11 de junho de 2013 20:27