Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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:
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)
{
// página aspx
...
-->Aqui outro erro que que estava cometendo é aquilo que falei do DOM no início. Eu estava tentando fazer isto: