Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brunoguitarman

[Resolvido] JavaScript no ASP.NET

Recommended Posts

Olá. Perguntei no fórum de .NET e me indicaram fazer a pergunta aqui.

 

Gostaria de saber se tem como, primeiramente deixar todo script no codebehind, ou mesmo em um arquivo .js e esconder do usuário o código. Depois, gostaria de saber se tem como chamá-lo sem callback.

 

Por exemplo, com elementos html posso fazer muito simplesmente algo como:

 

<script type="text/javascript">    
 <!--            
     function mudaTexto() 
     {                
          document.getElementById("txtbox").value = "Meu Texto";
     }
  -->
</script>

...

<input id="txtbox" value="" disabled="true">
<button type="button" onclick="mudaTexto()">Mudar Texto</button>

...

 

Mas caso queira fazer utilizando elementos ASP preciso utilizar algo como "Page.ClientScript.RegisterStartupScript" no evento "onclick" do botão, ou "Button1.Attributes.Add(evento,return minhafuncao)" e sempre que tento inserir o javascript ele recarrega a página, não executa simplesmente o javascript. O que posso fazer para modificar esse comportamento?

 

No site de .NET ainda me indicaram utilizar no caso do botão o evento "onclientclick".

 

Gostaria de saber como vejo quais eventos posso utilizar pra fazer isso.

E na verdade o botão foi só um exemplo. No momento o que quero mesmo é utilizar uma dropdownlist que carregará informações de um banco de dados e algumas opções selecionadas precisarão de detalhamento, então por exemplo o usuário seleciona a opção 1, tudo bem, pode salvar as alterações, mas caso selecione a opção 2 aparecerá uma caixa de texto pedindo mais informações. Como posso fazer algo do tipo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra não deixar o tópico sem solução e para ajudar caso alguém venha a ter o mesmo problema:

 

O meu principal problema foi procurar no DOM os elementos ASP para executar o javascript.

 

Por exemplo, desativar a caixa de texto utilizando ASP.NET se modifica o atributo "enabled" dela, mas como javascript é um script clientside, os elementos ASP já não estão mais lá. O que se encontra na página são apenas elementos HTML; portanto, o que é preciso aqui é tratar o atributo "disabled" da caixa de texto, já que o atributo "enabled" só existe no elemento ASP.

 

Para o exemplo do botão uma solução simples é no evento Page_Load adicionar uma linha como esta:

 

Button1.Attributes.Add("evento","minhafuncao; return false;");

 

O "return false;" impede que a página seja carregada novamente.

 

 

 

Já o que eu queria, de selecionada tal opção da dropdownlist ativar ou desativar uma caixa de texto basta fazer algo como o seguinte:

 

// codebehind

protected void Page_Load(object sender, EventArgs e)
       {
           Dropdownlist1.Attributes.Add("onChange", "HabilitaTexto(); return false;");
       }

// página aspx

...

 <script type="text/javascript">
   <!--
       function HabilitaTexto()
       {
           if (document.getElementById("Dropdownlist1").value == "Other") {
               document.getElementById("TextBox1").disabled = false;
           }
           else {
               document.getElementById("TextBox1").disabled = true;
           }
       }
-->
 </script>

...

  <asp:dropdownlist ID="Dropdownlist1" runat="server">
           <asp:ListItem Value="1">Item 1</asp:ListItem>
           <asp:ListItem Value="2">Item 2</asp:ListItem>
           <asp:ListItem Value="3">Item 3</asp:ListItem>
           <asp:ListItem Value="Other">Outro</asp:ListItem>
  </asp:dropdownlist>

 

 

Aqui outro erro que que estava cometendo é aquilo que falei do DOM no início. Eu estava tentando fazer isto:

 

Dropdownlist1.Attributes.Add("onselectedindexchanged", "HabilitaTexto(); return false;");

 

Mas o evento "onselectedindexchanged" somente existe para o elemento "asp:dropdownlist". Quando é executado o javascript, esse elemento já se transformou em um "select" HTML. Dessa forma, deve ser utilizado o evento "onChange", como pode ser visto a seguir:

 

Dropdownlist1.Attributes.Add("onChange", "HabilitaTexto(); return false;");

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.