none
Javascript - Return valor para outro TextBox com MasterPage RRS feed

  • Pergunta

  • Olá Amigos,

     

    Tinha uma função para efetuar alguns calculos, mas era acionado no postback de um TextBox, esse calculo apresentava o resultado em um outro textBox, mas por questão de desempenho resolvi fazer uma função javascript para efetuar o calculo.

     

    Fiz como esta abaixo no textBox

    onblur="Calcular(this.value,'textBoxresultado');"

     

    Minha funcao esta como abaixo

     

    function Calcular(Valor, resultado)

     

    O calculo esta sendo feita, porém gostaria de jogar o resultado no 'textBoxresultado', estou usando masterpage, e esta função esta em outro arquivo js.

     

    Espero que tenham entendido.

     

    Desde já agradeço.

     

    Fábio Freitas

     

    quinta-feira, 11 de dezembro de 2008 12:35

Respostas

  • Olá Fábio

    Pelo que eu entendi você está com problemas em pegar o id do controle que está em um contentPage através de uma função javascript em um arquivo. js, correto?

    Esse realmente é um problema comum. Caso a função javascript esteja na própria página podemos acessar o controle como "ctl00_ContentPlaceHolder1_TextBox1" ou <%= TextBox1.ClientID %>. Mas caso o script esteja em um arquivo .js separado, esses métodos não irão funcionar.

    Recomendo que você verifique o seguinte artigo:

        "Master Pages and JavaScript document.getElementById"
        http://java.codeproject.com/KB/scripting/Masterpage-Javascript.aspx


    Fiz um teste aqui e funcionou sem problemas. Segue abaixo o exemplo que realizei:

    ConentPage (.Aspx):
    ===========
    Code Snippet

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
        CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
        <script type="text/javascript" src="JScript.js"></script>
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
        <asp:TextBox ID="TextBox1" runat="server" onblur="BLOCKED SCRIPTTransferValue()"></asp:TextBox>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    </asp:Content>



    ConentPage (Code-Behind):
    ===========
    Code Snippet

    using System;
    using System.Text;
    using System.Web.UI;

    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            RenderJSArrayWithCliendIds(TextBox1, TextBox2);
        }
        public void RenderJSArrayWithCliendIds(params Control[] wc)
        {
            if (wc.Length > 0)
            {
                StringBuilder arrClientIDValue = new StringBuilder();
                StringBuilder arrServerIDValue = new StringBuilder();

                // Get a ClientScriptManager reference from the Page class.
                ClientScriptManager cs = Page.ClientScript;

                // Now loop through the controls and build the client and server id's
                for (int i = 0; i < wc.Length; i++)
                {
                    arrClientIDValue.Append("\"" +
                                     wc[i].ClientID + "\",");
                    arrServerIDValue.Append("\"" +
                                     wc[i].ID + "\",");
                }

                // Register the array of client and server id to the client
                cs.RegisterArrayDeclaration("MyClientID",
                   arrClientIDValue.ToString().Remove(arrClientIDValue.ToString().Length - 1, 1));
                cs.RegisterArrayDeclaration("MyServerID",
                   arrServerIDValue.ToString().Remove(arrServerIDValue.ToString().Length - 1, 1));

                // Now register the method GetClientId, used to get the client id of tthe control
                cs.RegisterStartupScript(this.Page.GetType(), "key",
                   "\nfunction GetClientId(serverId)\n{\nfor(i=0; i<MyServerID.length; i++)" +
                   "\n{\nif ( MyServerID[i] == serverId )\n" +
                   "{\nreturn MyClientID[i];\nbreak;\n}\n}\n}", true);
            }
        }
    }




    JScript.js
    ==========
    Code Snippet

    function TransferValue() {
        var txt1 = document.getElementById(GetClientId("TextBox1"));
        var txt2 = document.getElementById(GetClientId("TextBox2"));
        txt2.value = txt1.value;
    }



     Espero que essa informação seja útil.
     
     []'s
    segunda-feira, 15 de dezembro de 2008 15:50
    Moderador